Можно ли очистить очередь заданий на сервере Gearman? - PullRequest
10 голосов
/ 22 декабря 2010

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

Ответы [ 3 ]

12 голосов
/ 18 сентября 2012

я сталкивался этот метод :

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

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

6 голосов
/ 25 января 2011

Административный протокол telnetable (поиск по «Административному протоколу») также не имеет команды для очистки очереди, есть только команда отключения.

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

Что-то вроде:

# generic_consumer.py job1 job2 job3

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

# (echo status ; sleep 0.1) | netcat 127.0.0.1 4730
5 голосов
/ 20 января 2011

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

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

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

...