Можно ли очистить очередь заданий на сервере 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