2012-09-21 69 views
1

我見過幾種解決方案這樣做的:在Heroku上運行調度程序或延遲作業的最佳做法是什麼?

  1. 的Redis/Resque
  2. 延遲招聘
  3. Heroku的調度
  4. 發條

Heroku的調度程序將無法正常工作,因爲它運行在隨機時間和最常見的每10分鐘只有一次。

在雪松上運行。運行多個Web dynos。

編輯:這就是我想要做的:
在將來的任意點調用帶參數的任意方法。像Schedule.set(Notification.send_update_to_user(574), Time.now + 1.days)

+0

你想做什麼?你是否需要一個調度程序,一個作業隊列或一個將作業放入隊列中的調度程序?如果十分鐘不夠頻繁,那是什麼? – willglynn

+0

@willglynn - 好的,我更新了這個問題。 –

回答

0

尋求多種選擇方案後,我選擇了延遲工作,這是有據可查在Heroku上。

對於需要在特定時間每天或每小時運行一次的作業,Heroku調度程序運行良好,但有時不運行。

1

嘗試rufus/scheduler。

需要 '的rubygems' 需要 '魯弗斯/調度'

調度=魯弗斯:: Scheduler.start_new

scheduler.every '1米' 做
Checkin.check_checkin()

3

我會選擇Sidekiq,雖然有幾個其他選項適合您的示例。 Sidekiq讓你schedule jobs在任意時間在將來運行:

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

delayed extensions將讓你寫,而不是:

Notification.delay_for(1.day).send_update_to_user(574) 
相關問題