We take a look at Channels 2.0 and the changes it brings by going fully async, examining not only why the change makes things better, but also how we've managed to bridge between Django's synchronous world and the async world, and what the future might hold for Django and Channels.
The Channels project has taken a major turn with version 2.0, embracing Python's async functionality and building applications around an async event loop rather than worker processes. But why the big change? And what does it mean for Django?
We'll look at the progress Channels is making in turning more of the request/response cycle into native async code - how far can we get down the stack before making APIs async becomes hard? Can we make it as far as the ORM? How do we bridge between Django's synchronous world and the async world when we do reach that boundary?
We also take a look at how it's changed both Channels consumers, opening up the possibility of mixing async calls in with your synchronous code, and how it's changed what the ASGI spec looks like and what that might mean for adoption.
And, finally, we'll look what's next for Django and Channels, and maybe how it will affect the Python web world as a whole.