簡體   English   中英

如何檢查resque作業是否已完成

[英]How to check if resque job has finished

我有一個案例場景,我需要在后台運行多個記錄更新(使用resque),我想給用戶提供任務運行方式的可視指示(例如, started/running/finished )。

實現這一目標的一種方法(我能想到)是將當前狀態保存到表中,然后通過簡單的頁面刷新向用戶顯示狀態。

任何人都可以建議一個更好的解決方案嗎?我想避免為此創建整個遷移,模型,控制器。

謝謝

正如我所評論的那樣, resque-status gem可能對您有用。 我不確定這是否是一個答案,但因為你說你不想為此創建遷移,模型和控制器。 因此,寶石可能是要走的路。

從作業ID中,您可以獲得您要查找的狀態,例如:

status = Resque::Plugins::Status::Hash.get(job_id)
status.working? #=> true

還有一個名為resque-web的前端,也可以查看。

您可以使用ruby的全局變量$var_name = 'foo' 但是我不確定它,因為它們在軌道中被認為是不好的做法,但在這種情況下,只要它們的名稱非常獨特,我就認為它們是合理的。 可以這樣做(如果是resque):

class UpdateJob
  @queue = data

  def self.perform
    $my_job_name_is_running = true
    MyJobName.new.run
    $my_job_name_is_running = nil
  end
end

然后你可以從應用程序的任何地方訪問它們:

while $my_job_name_is_running
  puts "job is running..." if $my_job_name_is_running
  sleep 3 # important to not overload your processor
end

Ruby全球變量並不是很受歡迎。 查看文檔以獲取更多信息https://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/globalvars.html

暫無
暫無

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

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