W3cubDocs

/Django 6.0

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

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/uvicorn/