Redis
 sql >> Base de données >  >> NoSQL >> Redis

RQ - Vider et supprimer les files d'attente

Nettoyage avec rq

RQ propose des méthodes pour vider n'importe quelle file d'attente :

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

Vous pouvez faire la même chose pour test file d'attente, si vous l'avez toujours présente.

Nettoyage à l'aide de rq-dashboard

Installez rq-dashboard :

$ pip install rq-dashboard

Lancez-le :

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

Ouvrir dans le navigateur.

Sélectionnez la file d'attente

Cliquez sur le bouton rouge "Vider"

Et vous avez terminé.

Fonction Python Purger les tâches

Si vous exécutez un Redis trop ancien, qui échoue sur la commande utilisée par RQ, vous pouvez toujours réussir à supprimer des tâches avec du code python :

Le code prend le nom d'une file d'attente, où se trouvent les identifiants de travail.

En utilisant LPOP, nous demandons les identifiants de travail par un.

En ajoutant le préfixe (par défaut "rq:job :") à l'ID du travail, nous avons une clé, où est stocké le travail.

En utilisant DEL sur chaque clé, nous purgeons notre base de données travail par travail.

>>> 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