Можно ли опорожнить очередь заданий на сервере Gearman? Я использую драйвер python для Gearman, и в документации нет информации об опорожнении очередей. Я бы предположил, что эта функциональность должна существовать, возможно, с прямым подключением к серверу Gearman.
Можно ли опорожнить очередь заданий на сервере Gearman
Ответ 1
Насколько я смог рассказать по документам и использовать gearman с PHP, единственный способ очистить очередь заданий - это перезапустить сервер задания. Если вы используете постоянные очереди заданий, вам также нужно будет очистить все, что вы используете, в качестве постоянного хранилища, если это хранилище БД, вам нужно будет очистить соответствующие таблицы всех строк.
stop gearmand → пустые строки таблицы → start gearmand
Надеюсь, что это достаточно ясно.
Ответ 2
Я встретил этот метод:
/usr/bin/gearman -t 1000 -n -w -f function_name > /dev/null
который в основном сбрасывает все задания в/dev/null.
Ответ 3
Административный протокол telnetable (поиск "Административный протокол" ) не имеет команды для опорожнения очереди, есть только команда выключения.
Если вы хотите избежать простоев, вы можете написать родовому "работнику-потребителю" и использовать его для опорожнения очередей. Я установил его как script, который принимает список имен заданий и просто сидит там, принимая задания и потребляя их.
Что-то вроде:
# generic_consumer.py job1 job2 job3
Вы можете использовать команду статуса административного протокола, чтобы получить список имен функций и рассчитывать на очередь. Административный протокол сообщает вам формат ответа.
# (echo status ; sleep 0.1) | netcat 127.0.0.1 4730