Подтвердить что ты не робот

RQ - пустые и удаленные очереди

Я использую RQ, и у меня есть очередь failed с тысячами элементов, а другая очередь test я создал некоторое время назад для тестирования, которое теперь пусто и не используется. Мне интересно, как удалить все задания из очереди failed и вообще удалить очередь test?

Извините за основной вопрос, но я не могу найти информацию об этом в RQ docs, и я совершенно не знаком с обоими Redis и RQ... Спасибо заранее!

4b9b3361

Ответ 1

Очистка с использованием rq

RQ предлагает методы, чтобы сделать любую очередь пустой:

>>> from redis import Redis
>>> from rq import Queue
>>> qfail = Queue("failed", connection=Redis())
>>> qfail.count
8
>>> qfail.empty()
8L
>>> qfail.count
0

Вы можете сделать то же самое для очереди test, если она у вас есть.

Очистка с помощью rq-dashboard

Установите rq-dashboard:

$ pip install rq-dashboard

Запустите его:

$ rq-dashboard
RQ Dashboard, version 0.3.4
 * Running on http://0.0.0.0:9181/

Открыть в браузере.

Выберите очередь

Нажмите красную кнопку "Пусто"

И все готово.

Задачи очистки Python

Если вы запускаете слишком старый Redis, который не работает при команде RQ, вы все равно можете удалять с удалением заданий по коду python:

Код принимает имя очереди, где указаны идентификаторы работы.

Usilg LPOP мы запрашиваем идентификаторы работы одним.

Добавление префикса (по умолчанию "rq: job:" ) к идентификатору задания у нас есть ключ, где хранится задание.

Используя DEL на каждом ключе, мы очищаем наше задание базы данных по заданию.

>>> import redis
>>> r = redis.StrictRedis()
>>> qname = "rq:queue:failed"
>>> def purgeq(r, qname):
... while True:
...     jid = r.lpop(qname)
...     if jid is None:
...         break
...     r.delete("rq:job:" + jid)
...     print jid
...
>>> purge(r, qname)
a0be3624-86c1-4dc4-bb2e-2043d2734b7b
3796c312-9b02-4a77-be89-249aa7325c25
ca65f2b8-044c-41b5-b5ac-cefd56699758
896f70a7-9a35-4f6b-b122-a08513022bc5

Ответ 2

- 2016 -

Теперь вы можете использовать командную строку формы rq empty:

/path/to/rq empty queue_name

Таким образом, вы можете использовать его для опорожнения любой очереди не только с ошибкой

Ответ 3

Инструмент мониторинга rqinfo может удалить неудачную очередь.
Просто убедитесь, что у вас есть активный virtualenv с установленным rq и запустите

$ rqinfo --empty-failed-queue

Подробнее см. rqinfo --help.

Ответ 4

Вы можете просто войти в Redis и очистить все очереди

чтобы залогиниться

пользователь @пользователь: ~ $ redis-cli

введите эту команду и нажмите Enter

FlushAll

И вы сделали

Редактировать: Это удалит все, что хранится в Redis