Skip to main content

a2wsgi

Convert WSGI app to ASGI app or ASGI app to WSGI app.

Pure Python. Only depend on the standard library.

Compared with other converters, the advantage is that a2wsgi will not accumulate the requested content or response content in the memory, so you don't have to worry about the memory limit caused by a2wsgi. This problem exists in converters implemented by uvicorn/startlette or hypercorn.

Install

pip install a2wsgi

How to use

WSGIMiddleware

Convert WSGI app to ASGI app:

from a2wsgi import WSGIMiddleware

ASGI_APP = WSGIMiddleware(WSGI_APP)

WSGIMiddleware executes WSGI applications with a thread pool of up to 10 threads by default. If you want to increase or decrease this number, just like WSGIMiddleware(..., workers=15).

ASGIMiddleware

Convert ASGI app to WSGI app:

from a2wsgi import ASGIMiddleware

WSGI_APP = ASGIMiddleware(ASGI_APP)

ASGIMiddleware will wait for the ASGI application's Background Task to complete before returning the last null byte. But sometimes you may not want to wait indefinitely for the execution of the Background Task of the ASGI application, then you only need to give the parameter ASGIMiddleware(..., wait_time=5.0), after the time exceeds, the ASGI task corresponding to the request will be tried to cancel, and the last null byte will be returned.

You can also specify your own event loop through the loop parameter instead of the default event loop. Like ASGIMiddleware(..., loop=faster_loop)

Access the original Scope/Environ

Sometimes you may need to access the original WSGI Environ in the ASGI application, just use scope["wsgi_environ"]; it is also easy to access the ASGI Scope in the WSGI Application, use environ["asgi.scope"].

Benchmark

Run pytest ./benchmark.py -s to compare the performance of a2wsgi and uvicorn.middleware.wsgi.WSGIMiddleware / asgiref.wsgi.WsgiToAsgi.

Why a2wsgi

Convert WSGI app to ASGI app

You can convert an existing WSGI project to an ASGI project to make it easier to migrate from WSGI applications to ASGI applications.

Convert ASGI app to WSGI app

There is a lot of support for WSGI. Converting ASGI to WSGI, you will be able to use many existing services to deploy ASGI applications.

Release files for a2wsgi 1.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for a2wsgi 1.8.0
File Size Uploaded
a2wsgi-1.8.0.tar.gz 13.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for a2wsgi 1.8.0
File Interpreter ABI Platform
a2wsgi-1.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.1 kB

Release files / a2wsgi-1.8.0.tar.gz

Download URL a2wsgi-1.8.0.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b20436b92f33db9ff1436be64b86e82e187096ebb5d1a52de2794a70db981510
BLAKE2b-256 checksum
How to use checksums
28d3aabcfb2023a589cc91fc908729d3b0e3836b54918fd71c8741636fc61d81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.9.0 CPython/3.8.18

Release files / a2wsgi-1.8.0-py3-none-any.whl

Download URL a2wsgi-1.8.0-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f7c6f9adf4b6a6a6b0a557f48d0615e20a1581f543b133dc83f116365e52c1fb
BLAKE2b-256 checksum
How to use checksums
dedd9ed5da0e6e50aa6471379bb41ee6e3b910a2d5579d1d3b16cd3fac5b81f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.9.0 CPython/3.8.18

Release history Release notifications | RSS feed

1.10.9

2 release files

1.10.7

2 release files

1.10.6

2 release files

1.10.5

2 release files

1.10.4

2 release files

1.10.3

2 release files

1.10.2

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.0

2 release files

This release

1.8.0 This release

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page