簡體   English   中英

是否可以重置 rails 中延遲作業的超時?

[英]Is it possible to reset the timeout of a delayed job in rails?

我有一個運行幾個步驟的延遲工作。 每當一個步驟完成時,我想重置超時。
是否可以?

例如

# config/initializers/delayed_job_config.rb
Delayed::Worker.max_run_time = 5.minutes
# app/jobs/my_process_job.rb
class MyProcessJob < ApplicationJob
  def perform
    `sleep 4m` # step 1
    # reset timeout
    `sleep 4m` # step 2
    puts 'done'
  end
end

查看Delayed Job中超時是如何實現的,如果不修改 Delayed Job 是不可能重置超時的。 但是,您可以改為執行以下操作

# config/initializers/delayed_job_config.rb
Delayed::Worker.max_run_time = 10.minutes
# app/jobs/my_process_job.rb
class MyProcessJob < ApplicationJob
  def perform
    Timeout.timeout(5.minutes.to_i) {
      `sleep 4m` # step 1
    }

    Timeout.timeout(5.minutes.to_i) {
      `sleep 4m` # step 2
    }
    puts 'done'
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM