The lightning-fast ASGI server.
Documentation: https://www.uvicorn.org
Requirements: Python 3.6+ (For Python 3.5 support, install version 0.8.6.)
Uvicorn is a lightning-fast ASGI server implementation, using uvloop and httptools.
Until recently Python has lacked a minimal low-level server/application interface for asyncio frameworks. The ASGI specification fills this gap, and means we're now able to start building a common set of tooling usable across all asyncio frameworks.
Uvicorn currently supports HTTP/1.1 and WebSockets. Support for HTTP/2 is planned.
Install using pip:
$ pip install uvicornThis will install uvicorn with minimal (pure Python) dependencies.
$ pip install uvicorn[standard]This will install uvicorn with "Cython-based" dependencies (where possible) and other "optional extras".
In this context, "Cython-based" means the following:
- the event loop uvloopwill be installed and used if possible.
- the http protocol will be handled by httptoolsif possible.
Moreover, "optional extras" means that:
- the websocket protocol will be handled by websockets(should you want to usewsprotoyou'd need to install it manually) if possible.
- the --reloaderflag in development mode will usewatchgod.
- windows users will have coloramainstalled for the colored logs.
- python-dotenvwill be installed should you want to use the- --env-fileoption.
- PyYAMLwill be installed to allow you to provide a- .yamlfile to- --log-config, if desired.
Create an application, in example.py:
async def app(scope, receive, send):
    assert scope['type'] == 'http'
    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [
            [b'content-type', b'text/plain'],
        ],
    })
    await send({
        'type': 'http.response.body',
        'body': b'Hello, world!',
    })Run the server:
$ uvicorn example:appUvicorn is BSD licensed code.
Designed & built in Brighton, England.
— 🦄  —