簡體   English   中英

是否可以立即運行延遲作業但仍異步運行?

[英]Is it possible to run a delayed job immediately but still asynchronously?

我們使用DelayedJob在后台運行任務,因為它們可能需要一段時間,也因為如果拋出錯誤,我們仍然希望 Web 請求成功。

問題是,有時工作可能非常大(更改數百或數千個數據庫行),有時可能非常小(如 5 db 行)。 對於較小的情況,我們仍然希望將其作為延遲作業運行,以便錯誤處理可以以相同的方式工作,但我們希望不必等待大約 5 秒鍾讓 DJ 接聽工作。

有沒有辦法將作業排隊以便它在后台運行,然后立即運行它,這樣我們就不必等待工作人員在 5 秒后執行?

編輯:是的,這是 Ruby on Rails :-)

延遲作業以設定的時間間隔輪詢數據庫以獲取新的 dj 記錄。 您可以在初始化程序中重新配置此間隔:

# config/delayed_job.rb
Delayed::Worker.sleep_delay = 2 # or 1 if you're feeling wild.

這將在全球范圍內影響 DJ。

怎么樣

SomeJob.set(
    wait: 0,
    queue: "queue_name",
  ).perform_later

暫無
暫無

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

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