(One of my summaries of the one-day 2016 PyGrunn conference).
Django channels is a project to make Django to handle more than “only” plain http requests. So: websockets, http2, etc. Regular http is the normal request/response cycle. Websockets is a connection that stays open, for bi-directional communication. Websockets are technically an ordered first-in first-out queue with message expiry and at-most-once delivery to only one listener at the time.
“Django channels” is an easy-to-understand extension of the Django view mechanism. Easy to integrate and deploy.
Installing django channels is quick. Just add the application to your
INSTALLED_APPS
list. That’s it. The complexity happens when deploying it
as it is not a regular WSGI deployment. It uses a new standard called ASGI (a
= asynchronous). Currently there’s a “worker service” called daphne
(build
in parallel to django channels) that implements ASGI.
You need to configure a “backing service”. Simplified: a queue.
They showed a demo where everybody in the room could move markers over a map. Worked like a charm.
How it works behind the scenes is that you define “channels”. Channels can recieve messages and can send messages to other channels. So you can have channel for reading incoming messages, do something with it and then send a reply back to some output channel. Everything is hooked up with “routes”.
You can add channels to groups so that you can, for instance, add the “output” channel of a new connection to the group you use for sending out status messages.
My name is Reinout van Rees and I program in Python, I live in the Netherlands, I cycle recumbent bikes and I have a model railway.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):