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