我计划从 Heroku Scheduler 转移到使用 Clockwork gem 的自定义时钟进程。如果任务在下一个相同类型的调度任务之前没有完成,Heroku 调度程序将终止该任务。我如何在 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 分钟运行一次作业,但我不想同时运行相同的作业。我应该如何处理?