Installation

Channels is available on PyPI - to install it run:

python -m pip install -U 'channels[daphne]'

This will install Channels together with the Daphne ASGI application server. If you wish to use a different application server you can pip install channels, without the optional daphne add-on.

Once that’s done, you should add daphne to the beginning of your INSTALLED_APPS setting:

INSTALLED_APPS = (
    "daphne",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.sites",
    ...
)

This will install the Daphne’s ASGI version of the runserver management command.

You can also add "channels" for Channel’s runworker command.

Then, adjust your project’s asgi.py file, e.g. myproject/asgi.py, to wrap the Django ASGI application:

import os

from channels.routing import ProtocolTypeRouter
from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
# Initialize Django ASGI application early to ensure the AppRegistry
# is populated before importing code that may import ORM models.
django_asgi_app = get_asgi_application()

application = ProtocolTypeRouter({
    "http": django_asgi_app,
    # Just HTTP for now. (We can add other protocols later.)
})

And finally, set your ASGI_APPLICATION setting to point to that routing object as your root application:

ASGI_APPLICATION = "myproject.asgi.application"

That’s it! Once enabled, daphne will integrate itself into Django and take control of the runserver command. See Introduction for more.

Note

Please be wary of any other third-party apps that require an overloaded or replacement runserver command. Daphne provides a separate runserver command and may conflict with it. An example of such a conflict is with whitenoise.runserver_nostatic from whitenoise. In order to solve such issues, make sure daphne is at the top of your INSTALLED_APPS or remove the offending app altogether.

Type checking support

If you want type checking support, you can install the type stubs:

python -m pip install types-channels

Or install channels with type support using the types extra:

python -m pip install 'channels[types]'

Installing the latest development version

To install the latest version of Channels, clone the repo, change to the repo directory, and pip install it into your current virtual environment:

$ git clone git@github.com:django/channels.git
$ cd channels
$ <activate your project’s virtual environment>
(environment) $ pip install -e .  # the dot specifies the current repo