【问题标题】:Cron and delayed_job - using both in tandem for HerokuCron 和 delay_job - 在 Heroku 中同时使用两者
【发布时间】:2011-12-11 00:44:08
【问题描述】:

我是否认为在 heroku 上每 2 小时运行一次后台进程的最有效方法(例如发送电子邮件/统计信息收集等)是使用计划为每两个小时的 cron,然后将项目粘贴到delay_jobs 队列(基于 dj gem)然后被 heroku 工作人员立即拾取?

除此之外,一旦应用程序投入生产,我是否认为具有成本效益的方法是让雇佣火启动一个工人来执行这项工作,然后再将其关闭?

我还应该考虑其他方法吗?我以前没有做过这种延迟的工作——在开发和上线之前的基本生产测试中,我所有的一切都基于 heroku cron——但是在生产中,如果 cron 工作的负载增加,这似乎并不明智。

任何关于有价值的替代方法的指针表示赞赏!

【问题讨论】:

  • +1 表示“雇佣兵”。我以前没听说过。您使用 cron + DJ 的想法对我来说似乎很明智。不过,我不确定您所说的“加载 cron 作业”是什么意思,因为大概它所做的只是排队 DJ 任务。
  • 我指的是 cron now 上的负载,当 cron 实际执行大任务时,而不是仅仅将东西放入队列中。 IE。我只是使用一个 cron 任务来触发一个类方法。真的,我应该只使用 cron 将事情推送到队列中。这有意义吗?
  • 是的,我想我们说的是同一件事。 Cron 应该加载队列(这应该是一件非常轻量级的事情)。 DJ 工作应该承担繁重的工作。

标签: ruby-on-rails heroku cron delayed-job


【解决方案1】:

如果您没有一套全职工作可供工人完成,那么雇用解雇绝对是您的最佳选择,否则您将支付给休眠工人的费用。

另一个计时选项是使用可用的 :run_at 参数让延迟的作业在完成时重新安排自己。然后,工人会在时机成熟时执行此操作(尽管我从未测试过这是否可以与 Hirefire 一起使用,因为我认为他们只查看作业计数)

总体而言,这是一种非常合理的方法,也是我将使用的方法。

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2023-03-07
    • 2016-12-27
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多