我应该如何 运行 在 heroku 上自定义管理命令?

How should I run custom management command on heroku?

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

在 Heroku 上,Cron 和 Heroku Scheduler 大致相同。

Heroku 调度程序:

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

芹菜:

这是一个异步任务库。它非常大且坚固,几乎可以做任何你想做的事情。与 Cron 的最大区别在于,您可以在任何给定时间将异步任务安排到 运行,而不仅限于周期性任务(运行 每 X minutes/days 等) .不过,这种稳健性是有代价的。在生产环境和本地进行设置更加困难。特别是在当地。在生产环境中,我建议将 CloudAMQP 用于代理,将 RedisCloud 用于结果。仅将任务参数作为原语传递,以避免酸洗和减小消息大小。

如果您需要可靠的东西,但不想使用 Celery,也可以 RQ and Dramatiq

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