Redis
 sql >> Datenbank >  >> NoSQL >> Redis

RQ - Warteschlangen leeren und löschen

Bereinigung mit rq

RQ bietet Methoden, um jede Warteschlange leer zu machen:

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

Sie können dasselbe für test tun Warteschlange, falls noch vorhanden.

Bereinigung mit rq-dashboard

rq-dashboard installieren:

$ pip install rq-dashboard

Starten Sie es:

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

Im Browser öffnen.

Wählen Sie die Warteschlange aus

Klicken Sie auf den roten Button „Leeren“

Und Sie sind fertig.

Python-Funktion Jobs löschen

Wenn Sie ein zu altes Redis ausführen, das bei einem von RQ verwendeten Befehl fehlschlägt, können Sie möglicherweise immer noch mit dem Löschen von Jobs durch Python-Code erfolgreich sein:

Der Code nimmt einen Namen einer Warteschlange, wo Job-IDs sind.

Unter Verwendung von LPOP fragen wir nach Job-IDs um eins.

Durch Hinzufügen des Präfixes (standardmäßig "rq:job:") zur Job-ID haben wir einen Schlüssel, wo der Job gespeichert ist.

Mit DEL auf jeder Taste löschen wir unsere Datenbank Job für Job.

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