encode/uvicorn
The lightning-fast ASGI server.
repo name | encode/uvicorn |
repo link | https://github.com/encode/uvicorn |
homepage | https://www.uvicorn.org/ |
language | Python |
size (curr.) | 1597 kB |
stars (curr.) | 2609 |
created | 2017-05-31 |
license | BSD 3-Clause “New” or “Revised” License |
Documentation: https://www.uvicorn.org
Community: https://discuss.encode.io/c/uvicorn
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.
Quickstart
Install using pip
:
$ pip install uvicorn
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:app