【问题标题】:Django app with long running calculations具有长时间运行计算的 Django 应用程序
【发布时间】:2015-12-04 00:31:35
【问题描述】:

我正在创建一个 Django Web 应用程序,该应用程序可能具有长达一小时的长时间运行计算。计算是用 Python 构建的模拟模型。 Web 应用程序将输入发送到仿真模型,并在一段时间后收到答案。此外,用户应该能够在开始模拟后关闭浏览器,如果他在第二天登录,结果应该会出现。

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

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

所以我的问题是,这是我上面的一个好方法还是我可以查看哪些其他选项?

【问题讨论】:

    标签: python django heroku celery


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果你在 Heroku 上运行,你需要 django-rq,而不是 Celery。见https://devcenter.heroku.com/articles/python-rq

      【讨论】:

        猜你喜欢
        • 2012-07-13
        • 2018-02-24
        • 1970-01-01
        • 2012-08-25
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多