In a world where instantaneous communication is the norm, delayed responses in applications can lead to frustration and disengagement. Quite often, we are required to develop systems that do some long-running computation before returning a response to the users. It is not enough to send these tasks to background workers; users need to be kept in the loop about what's happening to their requests and, at the same time, have the freedom to move around our application, trusting that they'll be informed when their request is ready. Real-time notifications leveraging the websocket protocol help achieve this experience.
We will use Django, DRF, channels, Celery, and Redis to achieve such a notification system.