【问题标题】:Implement Delayed job and cron job in Heroku在 Heroku 中实现延迟作业和 cron 作业
【发布时间】:2013-08-04 18:11:59
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails heroku scheduled-tasks crontab delayed-job


    【解决方案1】:

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

    a) Heroku 上的延迟作业

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

    $ rake jobs:work
    

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

    默认情况下,对于 rails 应用程序,您的 heroku 应用程序应该已经带有一个用于运行上述 rake 任务的“workers”滑块(最初设置为 0)。只需将其滑至“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 美元。

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我想我对你的解释更了解了。
    猜你喜欢
    • 2011-03-13
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    相关资源
    最近更新 更多