# Python : Web : Uvicorn
\[ [PyPi](https://pypi.org/project/uvicorn/) | [Source](https://github.com/encode/uvicorn/) | [Docs](https://www.uvicorn.org/) ]
An ASGI web server implementation for Python with support for HTTP/1.1 and WebSockets.
#### Packages
```
uvicorn # minimal / pure Python
uvicorn[ standard ] # Cython-based dependencies and other "optional extras"
```
In this context, "Cython-based" means the following:
- the event loop `uvloop` will be installed and used if possible
- the http protocol will be handled by `httptools` if possible
Moreover, "optional extras" means that:
- the websocket protocol will be handled by [websockets](https://pypi.org/project/websockets/) if possible
- the `--reload` flag in development mode will use [watchfiles](https://pypi.org/project/watchfiles/)
- windows users will have [colorama](https://pypi.org/project/colorama/) installed for the colored logs
- [python-dotenv](https://pypi.org/project/python-dotenv/) will be installed should you want to use the `--env-file` option
- [PyYAML](https://pypi.org/project/PyYAML/) will be installed to allow you to provide a .yaml file to `--log-config`, if desired
#### Running
```bash
$ uvicorn [options] example:app
--help
--host 127.0.0.1
--port 8000 # 0 -> pick any available
--reload # enable auto-reload
--reload* # narrow which files are watched
--workers INT # processes; defaults to 1; not valid with --reload
--loop auto # auto | asyncio | uvloop
--limit-concurrency INT
# ...many more...
```