0

我开发了一个延迟作业和 cron 作业的应用程序,我需要将它部署到 Heroku。我意识到我的延迟工作需要 Heroku 附加组件“Heroku Scheduler Standard”,它的成本为 34.50 美元。1)这是否意味着我需要购买它以便我的延迟和cron作业自动运行?我想知道延迟作业和cron作业是否可以通过使用Heroku schedular来完成,那么为什么我们仍然需要javan/whenever和collectiveidea/delayed_job?我可以在 Heroku 中最好在免费状态下使用这些吗?

2)我的 cron 工作在 Heroku 中不起作用。我如何在heroku中运行我的宝石?

4

1 回答 1

5

您的问题中似乎混杂了一些想法。我会尽力将它们分开:

a) Heroku 上的 DelayedJob

处理在 DelayedJob 中排队的作业(即位于数据库中的延迟作业表中的记录)的一种方法是运行以下 rake 任务:

$ rake jobs:work

在 heroku 上,这个 rake 任务通常通过一个“工作”进程运行。

默认情况下,对于 rails 应用程序,您的 heroku 应用程序应该已经带有一个用于“workers”的滑块(最初设置为 0),它将运行上面的 rake 任务。只需将其滑动到“1”(每月花费大约 34.00 美元),就会在专用的 heroku 实例的后台启动 DelayedJob dequeue 进程,使用你的代码库,独立于你的 web dynos。

请注意,DelayedJob 不需要 Heroku 的“调度程序”插件。另请注意,heroku 按每月处理小时数收费。因此,如果您每月将“工人”滑到“1”一小时,然后在完成后再次滑回“0”,那么您支付的费用将远远低于约 34 美元的费用。还有一种方法可以以编程方式让工作人员上下滑动。

b) Heroku 上的 Cron

就目前而言,在 heroku 或其他基于云的应用程序服务提供商上管理您自己的自定义 cron文件是不可能的。一切都是短暂的,您或您的代码无法更改已部署的文件。

在这种情况下,Heroku 的调度程序是替换 cron 的合适插件。您应该能够在 heroku 调度程序中设置任务来执行您的 cron 任务当前正在执行的操作。

最后我检查了一下,heroku 的调度程序是免费的(参见:https ://addons.heroku.com/scheduler ),所以我不确定你为什么说它是 34.50 美元。

希望这可以帮助。

于 2013-08-03T19:26:52.217 回答