Heroku Scheduler から、clockwork gem を使用したカスタム クロック プロセスに移行する予定です。Heroku Scheduler は、次にスケジュールされた同じタイプのタスクの前にタスクが完了しなかった場合、そのタスクを強制終了します。Sidekiqでこれを達成するにはどうすればよいですか?
Timeout がスレッドセーフではないことを考えると。Sidekiq ワーカーでこれを行うのは悪い考えですか?
class RunsTooLongWorker
include Sidekiq::Worker
sidekiq_options :retry => false
def perform(*args)
Timeout::timeout(2.hours) do
# do possibly long running task
end
end
end
そうでない場合、代替手段は何ですか?10 分ごとにジョブを実行したいが、同時に同じジョブを実行したくないとします。どのように対処すればよいですか?