Channels is a project that takes Django and extends its abilities beyond HTTP - to handle WebSockets, chat protocols, IoT protocols, and more.
It does this by taking the core of Django and layering a fully asynchronous layer underneath, running Django itself in a synchronous mode but handling connections and sockets asynchronously, and giving you the choice to write in either style.
To get started understanding how Channels works, read our Introduction, which will walk through how things work. If you’re upgrading from Channels 1, take a look at What’s new in Channels 2? to get an overview of the changes; things are substantially different.
This is incomplete documentation for an upcoming release. If you are looking for documentation for the stable release of Channels, please select “stable” in the bottom-left corner of the page.
Channels is comprised of several packages:
- Channels, the Django integration layer
- Daphne, the HTTP and Websocket termination server
- asgiref, the base ASGI library/memory backend
- asgi_redis, the Redis channel backend
- asgi_rabbitmq, the RabbitMQ channel backend
- asgi_ipc, the POSIX IPC channel backend
This documentation covers the system as a whole; individual release notes and instructions can be found in the individual repositories.
- What’s new in Channels 2?
- Channels WebSocket wrapper
- ASGI (Asynchronous Server Gateway Interface) Draft Spec
- Community Projects
- Release Notes