[英]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.