我在Heroku上运行了一个Django应用程序,我需要每小时运行后台任务。我不会错过任何活动非常重要
我知道我可以使用Heroku调度程序。但是,它说:
Scheduler是一种“尽力而为”的服务,意味着执行是 预期但不保证。偶尔会知道调度程序(但是 很少)错过预定工作的执行。如果预定的工作是 应用程序的关键组件,建议运行一个 自定义时钟过程,而不是更可靠,控制和 可视性。
由于我不想错过活动,我进入了自定义时钟流程页面并在那里说:
由于dynos每天至少重启一次,因此需要一些逻辑 在启动时钟进程时存在以确保作业间隔 在dyno重启期间没有被跳过。
所以我的问题是,除了在运行时间方面更灵活之外,使用时钟进程与Heroku调度程序相比是否有优势?由于两者都不是100%可靠,我宁愿使用调度程序并实现一些逻辑以确保它运行,否则我必须支付额外的dyno(时钟进程)。
答案 0 :(得分:1)
是的,有一些!但正如您已经说过的,使用时钟进程的主要和最显着的区别是您可以实现更精细的粒度级别。例如,使用Heroku Scheduler,您无法实现以下目标:
据说两种调度方法之间的另一个重要区别是可靠性。当您使用Heroku Scheduler时,您实际上使用的是“黑匣子”,无法控制基础架构的大小。通过时钟进程,您可以更进一步,因为您可以选择dyno的大小(也许您有一个需要某种硬计算的调度过程(即使您最好将计算要求的任务分配给后台工作人员))
另外,有人可能会说,如果你有一个复杂的调度系统来调用许多不同的外部服务和脚本,那么控制调度代码可以帮助你测试和组织你的代码。