我見過幾種解決方案這樣做的:在Heroku上運行調度程序或延遲作業的最佳做法是什麼?
- 的Redis/Resque
- 延遲招聘
- Heroku的調度
- 發條
Heroku的調度程序將無法正常工作,因爲它運行在隨機時間和最常見的每10分鐘只有一次。
在雪松上運行。運行多個Web dynos。
編輯:這就是我想要做的:
在將來的任意點調用帶參數的任意方法。像Schedule.set(Notification.send_update_to_user(574), Time.now + 1.days)
我見過幾種解決方案這樣做的:在Heroku上運行調度程序或延遲作業的最佳做法是什麼?
Heroku的調度程序將無法正常工作,因爲它運行在隨機時間和最常見的每10分鐘只有一次。
在雪松上運行。運行多個Web dynos。
編輯:這就是我想要做的:
在將來的任意點調用帶參數的任意方法。像Schedule.set(Notification.send_update_to_user(574), Time.now + 1.days)
尋求多種選擇方案後,我選擇了延遲工作,這是有據可查在Heroku上。
對於需要在特定時間每天或每小時運行一次的作業,Heroku調度程序運行良好,但有時不運行。
嘗試rufus/scheduler。
需要 '的rubygems' 需要 '魯弗斯/調度'
調度=魯弗斯:: Scheduler.start_new
scheduler.every '1米' 做
Checkin.check_checkin()
端
我會選擇Sidekiq,雖然有幾個其他選項適合您的示例。 Sidekiq讓你schedule jobs在任意時間在將來運行:
NotificationUpdateWorker.perform_at(Time.now + 1.day, 574)
的delayed extensions將讓你寫,而不是:
Notification.delay_for(1.day).send_update_to_user(574)
你想做什麼?你是否需要一個調度程序,一個作業隊列或一個將作業放入隊列中的調度程序?如果十分鐘不夠頻繁,那是什麼? – willglynn
@willglynn - 好的,我更新了這個問題。 –