Hacker News new | ask | show | jobs
by jorl17 2 days ago
Everytime I have to deal with websockets in Django, I want to rip my eyeballs out.

Most of the time what I really want is just push support, and don't need bidirectional communication, i.e. SSE. But it's the same thing: both are a pain to work with in Django. I find django-channels so cumbersome.

So, for my latest projects, I've ended up offloading this push functionality to a service like Centrifugo. Django talks to Centrifugo, and clients connect to it as well. It makes Django still be django, without worrying about django-channels, ASGI and all of that complicated setup. I've been very, very, very happy with this decision, even if I do have some additional complexity to articulate the two. It is nowhere near as confusing and convoluted as django-channels and uvicorn/daphne, though.

As for async python in general, fully agree. Every couple of years I decide to give it a go with some new tool or framework, thinking surely now it'll finally just click and I'll get with the times. Every time I feel disappointed with footguns and absolutely terrible ergonomics. No, thanks.

2 comments

You don't need django-channels anymore for SSE: https://docs.djangoproject.com/en/6.0/ref/request-response/#...
For lots of applications, Mercure is a great replacement for websockets and it works wonderfully with django