【问题标题】:What is the best practice for running a scheduler or delayed job on Heroku?在 Heroku 上运行调度程序或延迟作业的最佳实践是什么?
【发布时间】:2012-09-13 11:11:42
【问题描述】:

我已经看到了几种解决方案:

  1. Redis / Resque
  2. 延迟作业
  3. Heroku 调度程序
  4. 发条

Heroku 调度程序无法运行,因为它是随机运行的,并且最频繁地每 10 分钟运行一次。

在雪松上运行。运行多个网络测功机。

编辑:这是我想做的:
在将来的任意点调用带有参数的任意方法。类似Schedule.set(Notification.send_update_to_user(574), Time.now + 1.days)

【问题讨论】:

  • 你想做什么?您是否需要调度程序、作业队列或将作业放入队列的调度程序?如果十分钟不够频繁,那是什么?
  • @willglynn - 好的,我更新了问题。

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


【解决方案1】:

我会选择 Sidekiq,尽管还有其他几个选项适合您的示例。 Sidekiq 让您schedule jobs 可以在未来的任意时间运行:

NotificationUpdateWorker.perform_at(Time.now + 1.day, 574)

delayed extensions 会让你改写:

Notification.delay_for(1.day).send_update_to_user(574)

【讨论】:

    【解决方案2】:

    尝试使用 rufus/调度程序。

    需要“红宝石” 需要'rufus/调度程序'

    scheduler = Rufus::Scheduler.start_new

    scheduler.every '1m' do
    Checkin.check_checkin()
    结束

    【讨论】:

      【解决方案3】:

      在查看了不同的选项后,我选择了延迟作业,这在 Heroku 上有很好的记录。

      对于需要在每天特定时间或每小时运行一次的作业,Heroku 调度程序运行良好,但有时无法运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-28
        • 2012-09-14
        • 2013-02-18
        • 1970-01-01
        • 2013-06-22
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多