How to use Django with Uvicorn¶
Uvicorn is an ASGI server based on uvloop
and httptools
, with an
emphasis on speed.
Installing Uvicorn¶
You can install Uvicorn with pip
:
python -m pip install uvicorn
Running Django in Uvicorn¶
When Uvicorn is installed, a uvicorn
command is available which runs ASGI
applications. Uvicorn needs to be called with the location of a module
containing an ASGI application object, followed by what the application is
called (separated by a colon).
For a typical Django project, invoking Uvicorn would look like:
python -m uvicorn myproject.asgi:application
This will start one process listening on 127.0.0.1:8000
. It requires that
your project be on the Python path; to ensure that run this command from the
same directory as your manage.py
file.
In development mode, you can add --reload
to cause the server to reload any
time a file is changed on disk.
For more advanced usage, please read the Uvicorn documentation.
Deploying Django using Uvicorn and Gunicorn¶
Gunicorn is a robust web server that implements process monitoring and automatic restarts. This can be useful when running Uvicorn in a production environment.
To install Uvicorn and Gunicorn, use the following:
python -m pip install uvicorn uvicorn-worker gunicorn
Then start Gunicorn using the Uvicorn worker class like this:
python -m gunicorn myproject.asgi:application -k uvicorn_worker.UvicornWorker