我开发了一个延迟了作业和cron作业的应用程序,我需要将它部署到Heroku。我意识到我的延迟工作需要Heroku附加功能,“Heroku Scheduler Standard”,它的成本为34.50美元。 1)这是否意味着我需要购买,以便我的延迟和cron作业将自动运行?我想知道延迟工作和cron工作是否可以通过使用Heroku日程表来完成,那么为什么我们仍然需要javan / when和collectiveidea / delayed_job?我可以在Heroku中使用这些,最好是在免费状态吗?
2)我的cron工作在Heroku中不起作用。如何在heroku中运行我的任何宝石?
答案 0 :(得分:4)
在你的问题中似乎有几个想法混杂在一起。我会尽力将它们分开:
a) Heroku上的DelayedJob
处理在DelayedJob中排队的作业(即位于数据库的delayed_jobs表中的记录)的一种方法是运行以下rake任务:
$ rake jobs:work
在heroku上,这个rake任务通常通过'worker'进程运行。
对于rails应用程序,默认情况下,你的heroku应用程序应该已经有一个“workers”(最初设置为0)的滑块,它将运行上面的rake任务。仅将其滑动到'1'(每月花费约34美元)将在后台的专用heroku实例上启动DelayedJob出列过程,使用您的代码库,独立于您的网络动力。
请注意,DelayedJob不需要Heroku的“Scheduler”插件。 另请注意,heroku按月处理数小时收费。因此,如果您将“工人”每月滑动到“1”一小时,然后在完成后再将其滑回“0”,您将支付的费用远远低于~34美元的费用。还有一种方法可以以编程方式打开和关闭工作人员。
b) Cron on Heroku
目前,在heroku或其他基于云的应用服务提供商上无法管理您自己的自定义cron 文件。一切都是短暂的,部署的文件不能被您或您的代码更改。
在这种情况下,Heroku的Scheduler是替换cron的合适附加组件。您应该能够在heroku调度程序中设置任务来执行您的cron任务当前正在执行的操作。
最后我查了一下,heroku的调度程序是免费的(参见:https://addons.heroku.com/scheduler),所以我不确定你为什么说这是34.50美元。
希望这有帮助。