Можно ли опорожнить очередь заданий на сервере Gearman

Можно ли опорожнить очередь заданий на сервере Gearman? Я использую драйвер python для 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