Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

RQ - Esvaziar e excluir filas

Limpar usando rq


RQ oferece métodos para deixar qualquer fila vazia:
>>> from redis import Redis
>>> from rq import Queue
>>> qfail = Queue("failed", connection=Redis())
>>> qfail.count
8
>>> qfail.empty()
8L
>>> qfail.count
0

Você pode fazer o mesmo para test fila, se ainda estiver presente.

Limpar usando rq-dashboard


Instale o rq-dashboard:
$ pip install rq-dashboard

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

Abra no navegador.

Selecione a fila

Clique no botão vermelho "Empty"

E você está feito.

Função Python Limpar jobs


Se você executar o Redis muito antigo, que falha no comando usado pelo RQ, ainda poderá ter sucesso com deletingjobs por código python:

O código recebe o nome de uma fila, onde estão os IDs dos trabalhos.

Usando o LPOP, pedimos IDs de trabalho por um.

Adicionando o prefixo (por padrão "rq:job:") ao ID do trabalho, temos uma chave, onde o trabalho é armazenado.

Usando DEL em cada chave, limpamos nosso banco de dados trabalho por trabalho.
>>> 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