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

можно ли очистить очередь заданий на сервер Gearman? Я использую драйвер python для Gearman, и в документации нет никакой информации об освобождении очередей. Я бы предположил, что эта функциональность должна существовать, возможно, с прямым подключением к серверу Gearman.

3 ответов


насколько я мог судить из документов и использования gearman с PHP, единственный способ очистить очередь заданий-перезапустить сервер заданий gearmand. Если вы используете постоянные очереди заданий, вам также нужно будет очистить все, что вы используете в качестве постоянного хранилища, если это хранилище БД, вам нужно будет очистить соответствующие таблицы всех строк.

остановить gearmand --> пустые строки таблицы --> запустить gearmand

надеюсь, это достаточно ясно.


я наткнулся на этот метод:

/usr/bin/gearman -t 1000 -n -w -f function_name > /dev/null

который в основном сбрасывает все задания в /dev / null.


в telnetable административного протокола (поиск "административного протокола") также не имеет команды для освобождения очереди, есть только команда выключения.

Если вы хотите избежать простоя, вы можете написать общий работник "потребитель заданий" и использовать его для освобождения очередей. Я установил один как сценарий, который берет список имен заданий и просто сидит там, принимая задания и потребляя их.

что-то типа:

# generic_consumer.py job1 job2 job3

вы можно использовать административный протокол статус команда для получения списка имен функций и подсчетов в очереди. The административного протокола документы сообщают вам формат ответа.

# (echo status ; sleep 0.1) | netcat 127.0.0.1 4730