在Sinatra應用程序中,我需要每天在後臺運行一個作業(我可能會使用sidekiq)。根據對象數量均勻動態調度後臺作業
我想根據用戶數量在白天均勻分發它們。因此,例如,如果有12個用戶需要每兩個小時執行一次該作業,並且如果有240個用戶,則該作業必須每6分鐘執行一次。
我知道有一些寶石可以讓你安排後臺任務(Rufus scheduler,每當...),但我不確定他們是否允許更改內部任務必須根據動態值執行,例如集合中的對象數量。
任何想法如何實現這一目標?
在Sinatra應用程序中,我需要每天在後臺運行一個作業(我可能會使用sidekiq)。根據對象數量均勻動態調度後臺作業
我想根據用戶數量在白天均勻分發它們。因此,例如,如果有12個用戶需要每兩個小時執行一次該作業,並且如果有240個用戶,則該作業必須每6分鐘執行一次。
我知道有一些寶石可以讓你安排後臺任務(Rufus scheduler,每當...),但我不確定他們是否允許更改內部任務必須根據動態值執行,例如集合中的對象數量。
任何想法如何實現這一目標?
使用whenever,你可以開始這樣的:
在用戶模式,用戶添加成功後:
every (1440/User.all.count).to_i.minutes do
add your background command task
end
也不要忘記更新每當店裏這實際上更新cron。
system 'bundle exec whenever --update-crontab store'
謝謝,但我不喜歡使用回調(不知道即使他們提供西納特拉)。我目前的想法(現在沒有時間來測試它)是每天都有一個調度程序工作來獲取用戶,並根據他們的編號調度使用sidekiq'''delay_for'''的實際後臺進程。 – macsig
那麼您的日程安排將不夠精確,無法在24小時內平均分配。 – emaillenin
毫秒內不必精確。如果有4個用戶,第一個工作在12:00.01,第二個在06:00.04,第三個在11:59:57,第四個在06:00:54,我可以。謝謝 – macsig
看一看這樣的:http://tysmith.me/post/20878111254/dynamictasks – usha