Web applications have changed significantly over the years – from simple static pages, to sprinkling interactiveness with JQuery/AJAX, to full dynamic single page apps. Through each evolution, we’re adding more complexity, more data and more asynchronous behavior to our applications.
In this new world, where does the synchronous nature of Django’s request-response cycle fit in?
My talk will focus on the topics around asynchronous Django applications. I’ll be sharing some lessons we learnt while building and scaling an interactive web application within the confines of Django and django-channels.
This topic is interesting because there’s been a lot of interest with meteor-like frameworks that have synchronized state between the frontend and backend. My intention is to show the audience that you can accomplish the same end-result with Django, without the need to learn and deploy a brand new framework.
An outline I have in mind:
What does asynchrony mean, and why you need it.
Traditional methods of achieving asynchrony (delayed jobs using worker queues like celery, long-polling for messaging, etc.)
Why django-channels changes the game.
How to architect your state.
What are the available options for deployment.
Gotchas, and what to do when things go wrong.
Just a basic knowledge of Django is required, as the topics are transferable to other frameworks. We did not have to monkey-patch any of the drivers to achieve asynchrony, so what you’ll learn at my talk will apply cleanly to a stock Django.