【发布时间】:2015-08-06 15:01:18
【问题描述】:
我计划从 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 分钟运行一次作业,但我不想同时运行相同的作业。我该如何处理?
【问题讨论】:
标签: ruby concurrency sidekiq rails-activejob