如何杀死Sidekiq工人?

时间:2016-02-01 08:43:28

标签: ruby-on-rails ruby sidekiq

我有一个应用程序,每次部署后都需要杀死特定的Sidekiq worker。因为api建议我可以通过从队列Sidekiq::Queue.new.clear删除所有作业来实现。

但是,运行此命令后,工作人员大小Sidekiq::Workers.new.size的数量仍然相同。实际上,我尝试了很多方法,但没有任何效果。请帮助!

2 个答案:

答案 0 :(得分:2)

我自己没有尝试过,但根据文档:

您可以添加要删除的所有工作人员作为队列的一部分(例如post_deploy)

require 'sidekiq/api'
Sidekiq::Queue.new("post_deploy").clear

删除工人:

Sidekiq::Queue.new("post_deploy").size

要查找队列中的作业数,您需要以这种方式找到它

camel

仅查找当前正在运行的Sidekiq线程数,您将使用Sidekiq :: Worker.size

如果我误解了你的问题,请告诉我。

答案 1 :(得分:2)

一旦工人开始处理工作,您无法在不关闭整个流程的情况下从外部停止工作。没有安全的方法来阻止线程。

您可以通过定期检查工作人员代码以查看是否应该停止来添加将工作人员停止到您自己的代码的功能,类似于job cancellation