Python Django应用程序,具有长时间运行的计算功能

Python Django应用程序,具有长时间运行的计算功能,python,django,heroku,celery,Python,Django,Heroku,Celery,我正在创建一个Django web应用程序,它的特点是可能需要一个小时的长时间计算。计算是用Python构建的仿真模型。web应用程序向仿真模型发送输入,并在一段时间后收到答案。此外,用户应该能够在开始模拟后关闭浏览器,如果他第二天登录,结果应该在那里 根据我的研究,我似乎可以使用芹菜和Redis/RabbitMQ作为代理在后台运行计算。理想情况下,我希望使用ajax显示进度更新,以便在计算完成时页面更新而无需用户刷新 我想在Heroku上托管应用程序,因此计算也将在Heroku服务器上运行。如

我正在创建一个Django web应用程序,它的特点是可能需要一个小时的长时间计算。计算是用Python构建的仿真模型。web应用程序向仿真模型发送输入,并在一段时间后收到答案。此外,用户应该能够在开始模拟后关闭浏览器,如果他第二天登录,结果应该在那里

根据我的研究,我似乎可以使用芹菜和Redis/RabbitMQ作为代理在后台运行计算。理想情况下,我希望使用ajax显示进度更新,以便在计算完成时页面更新而无需用户刷新

我想在Heroku上托管应用程序,因此计算也将在Heroku服务器上运行。如果我想将计算引擎移动到另一台服务器,会有多困难?如果计算引擎位于不同的服务器上,这可能会很有用


所以我的问题是,我的这是一个好方法,还是我可以考虑其他的选择?

我认为芹菜是一个好方法。不确定您是否需要Redis/RabbitMQ作为代理,或者您可以只使用MySQL——这取决于您的任务。芹菜工人可以在不同的服务器上运行,因此芹菜支持分布式队列

另一种方法-使用python实现一些队列引擎,将数据库作为代理,并使用cron执行作业。但这可能是一种肮脏的方式,有很多痛苦和错误


所以我认为芹菜是一种更好的方法。

如果你在Heroku上跑步,你想要的是django rq,而不是芹菜。看