cron job問題


#1

目前公司想要使用whenever的gem來做排程…但是pro的環境有n台server…
想請問大大如果用sidekiq的話,如何每天固定讓他執行job, 然後在n台server上,又不會出現n次重複的任務


#2

sidekiq 做的事情叫 delay job,可是你要開 whenever / cronjob 來做的話就會衝突哩

so~ 我給你一個解法,就是抽卡決鬥唄 X"DDDD

缺點是這些電腦都要用同一台 memcached + dalli

如果是額外的解法,應該就是找其中一台單純做這些事情之類的,以上


#3

假設你是用 capistrano 作部署

開一個叫 worker 的環境,叫他做所有 whenever & sidekiq 的事情

# config/deploy/worker.rb
....
# skip unicorn on worker envir
Rake::Task['unicorn:restart'].clear_actions
Rake::Task['unicorn:start'].clear_actions
Rake::Task['unicorn:legacy_restart'].clear_actions

然後叫其他 production 都不要做

# config/deploy/production.rb
....
# skip whenever, sidekiq on production envir
Rake::Task['whenever:update_crontab'].clear_actions
Rake::Task['sidekiq:start'].clear_actions
Rake::Task['sidekiq:stop'].clear_actions

這樣就可以避免重複執行,如果你需要一個 staging 接 production 資料庫
也可以用這種方式避免執行到 background job