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

时间:2019-05-13 21:32:48

标签: django heroku celery

我在heroku上部署了我的第一个Django应用。在这个应用程序中,我有各种各样的自定义管理命令,我希望它们定期运行。例如,我需要一个命令每两周运行一次,另一条命令每个星期日和星期三运行,另一条命令每周运行一次。我读过一些关于芹菜,Heroku计划程序和Cron的不同选项。我不确定选择哪种解决方案以及为什么。

2 个答案:

答案 0 :(得分:0)

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

Heroku Scheduler:

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

芹菜

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

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

答案 1 :(得分:0)

另一个适合您的选项是我们最近添加的名为Cron To Go的Heroku插件。它比Heroku Scheduler更可靠,更灵活,因为您可以使用任何cron表达式来调度后台作业。它可能会比Celery便宜,因为Celery要求您始终保持动态状态,并且易于维护,因为您不必在每次更改时间表时都进行代码更改。