我有一個應用程序,每個部署後需要殺死特定的Sidekiq工作。因爲它是api建議我可以通過從隊列Sidekiq::Queue.new.clear
中刪除所有工作來完成。如何殺死Sidekiq工人?
但是,運行此命令後,工作人員大小Sidekiq::Workers.new.size
的數量仍然相同。其實,我嘗試了很多方法,但沒有任何作用。請幫忙!
我有一個應用程序,每個部署後需要殺死特定的Sidekiq工作。因爲它是api建議我可以通過從隊列Sidekiq::Queue.new.clear
中刪除所有工作來完成。如何殺死Sidekiq工人?
但是,運行此命令後,工作人員大小Sidekiq::Workers.new.size
的數量仍然相同。其實,我嘗試了很多方法,但沒有任何作用。請幫忙!
我還沒有嘗試過自己,但基於文檔:
您可以添加所有的工人打算被刪除(如post_deploy)
class MyWorker
include Sidekiq::Worker
sidekiq_options :retry => 5, :dead => false, queue: :post_deploy
def perform()
...
end
end
對於隊列的一部分刪除工:
require 'sidekiq/api'
Sidekiq::Queue.new("post_deploy").clear
要查找的隊列中下作業的數量,你需要找到它這樣
Sidekiq::Queue.new("post_deploy").size
只有找到當前正在運行,您將使用Sidekiq :: Worker.size
讓我知道如果我誤解你的問題Sidekiq線程數。
一旦工作人員開始處理作業,無法在不關閉整個過程的情況下從外部阻止它。沒有安全的方法來阻止線程。
您可以通過讓工人代碼定期檢查以確定是否應該停止,從而增加停止工人到自己的代碼的能力,類似於job cancellation。
重複:http://stackoverflow.com/questions/12143350/gracefully-shutting-down-sidekiq-processes – aliibrahim
也許我不夠了解,但我不需要停止整個sidekiq過程。相反,我想要刪除特定的工作人員。 – yzalavin
我不認爲這是可能的,因爲sidekiq工作人員作爲流程運行。 – aliibrahim