我使用collectiveidea/delayed_job将后台作业添加到我的应用程序中。必须在启动之间以小延迟(5秒)重复工作。
工作代码:
MyJob = Struct.new(:item_id) do
def perform
result = some_method(item_id)
if result.nil?
Delayed::Job.enqueue MyJob.new(item_id)
end
end
end
我编辑了config/initializers/delayed_job_config.rb
:
...
Delayed::Worker.sleep_delay = 5
...
但是,在编辑之前和之后,上一个作业完成后立即启动作业。
Here写道sleep_delay
有另一个目的。
然后我将sleep
(来自Ruby内核)命令添加到作业代码:
MyJob = Struct.new(:item_id) do
def perform
result = some_method(item_id)
if result.nil?
sleep 5
Delayed::Job.enqueue MyJob.new(item_id)
end
end
end
它按预期工作,但在sleep
代码中使用delayed_job
是否正常?或者更优选cron
的系统调度程序?