2016-02-01 3 views
0

У меня есть приложение, которое после каждого развертывания должно убивать конкретного работника Sidekiq. Поскольку это api, я могу это сделать, удалив все задания из очереди Sidekiq::Queue.new.clear.Как убить работника Sidekiq?

Однако после выполнения этой команды количество рабочих размеров Sidekiq::Workers.new.size все равно. На самом деле, я пробовал много методов, но ничего не работает. Пожалуйста помоги!

+0

Duplicate of: http://stackoverflow.com/questions/12143350/gracefully-shutting-down-sidekiq-processes – aliibrahim

+0

Возможно, я недостаточно понимаю, но мне не нужно останавливать весь процесс sidekiq. Вместо этого я хочу удалить конкретного работника. – yzalavin

+1

Я не думаю, что это возможно, потому что работники sidekiq работают как процесс. – aliibrahim

ответ

1

Я не пробовал сам, но на основе документации:

Вы можете добавить все рабочие предназначены для удаления как часть очереди (например 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 потоков, запущенных в данный момент, вы будете использовать Sidekiq :: Worker.size

Позвольте мне знать, если я неправильно понял ваш вопрос.

+0

Если вы заинтересованы в удалении работников, которые , это должно быть достаточно, https: //github.com/mperham/sidekiq/wiki/FAQ#how-do-i-cancel-a-sidekiq-job – Prashanth

+0

Да, я пробовал все эти методы. Ничего не работает. – yzalavin

2

Как только работник начал обработку задания, вы не можете остановить его извне, не закрывая весь процесс. Не существует безопасного способа остановить поток.

Вы можете добавить возможность остановить работника по своему собственному коду, регулярно проверяя рабочий код, чтобы проверить, следует ли его остановить, аналогично job cancellation.

Смежные вопросы