在delayed_job中使用sleep是否正常?

时间:2015-10-06 09:58:53

标签: ruby-on-rails delayed-job

我使用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的系统调度程序?

0 个答案:

没有答案