When building a web application one of the common pitfalls are long running tasks that limit the ability for the server to respond to requests. Ideally these long running tasks will be sent to a separate process that can run asynchronously freeing up the web server to respond to additional requests.
How do you efficiently notify the end user when the task has been completed?
In this blog we will demonstrate how to use Flask, Celery, RabbitMQ and SocketIO to offload long running tasks and push notifications to the client when a task has completed. All of the code that is referenced in this blog is available in the DataRoadTech github repository.