【问题标题】:How should I run custom management command on heroku?我应该如何在 heroku 上运行自定义管理命令?
【发布时间】:2019-09-30 20:58:47
【问题描述】:

我在 heroku 上部署了我的第一个 django 应用程序。在这个应用程序中,我有各种各样的自定义管理命令,我想定期运行它们。例如,我需要一个命令每两周运行一次,另一个命令每周日和周三运行一次,另一个命令每周运行一次。我读过一些不同的选项,包括 celery、Heroku 调度程序和 Cron。我不确定选择哪种解决方案以及为什么。

【问题讨论】:

    标签: django heroku celery


    【解决方案1】:

    在 Heroku 上,Cron 和 Heroku Scheduler 大致是一回事。

    Heroku 调度程序:

    这是我上次查看的 Heroku 的测试版功能。不能保证 100% 的正常运行时间。如果您有付费客户并且这些定期任务是关键任务,则不应依赖此。如果您正在寻找一种免费的方式来为不太重要的事情实施定期任务,那么 Heroku Scheduler 将为您工作。

    芹菜:

    这是一个异步任务库。它非常大而且健壮,几乎可以做任何你想做的事情。与 Cron 最大的区别在于,您可以安排异步任务在任何给定时间运行,而不仅限于定期任务(每 X 分钟/天运行一次的任务等)。不过,这种稳健性是有代价的。在生产和本地设置更加困难。尤其是在本地。在生产中,我建议将 CloudAMQP 用于代理,将 RedisCloud 用于结果。仅将任务参数作为原语传递,以避免腌制和降低消息大小。

    如果您需要可靠的东西,但又不想使用 Celery,还有 RQDramatiq

    【讨论】:

      【解决方案2】:

      另一个可能对您有用的选项是我们最近添加的 Heroku 插件,称为 Cron To Go。它比 Heroku Scheduler 更可靠且更灵活,因为您可以使用任何 cron 表达式来安排后台作业。它可能比 Celery 更便宜,因为 Celery 需要您始终开启测功机,并且更易于维护,因为您不必每次更改计划时都推送代码更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        • 2012-10-27
        • 2011-11-24
        相关资源
        最近更新 更多