RQ - Empty & Delete Queues RQ - Empty & Delete Queues python python

RQ - Empty & Delete Queues


Cleanup using rq

RQ offers methods to make any queue empty:

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

You can do the same for test queue, if you have it still present.

Cleanup using rq-dashboard

Install rq-dashboard:

$ pip install rq-dashboard

Start it:

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

Open in browser.

Select the queue

Click the red button "Empty"

And you are done.

Python function Purge jobs

If you run too old Redis, which fails on command used by RQ, you still might sucess with deletingjobs by python code:

The code takes a name of a queue, where are job ids.

Usilg LPOP we ask for job ids by one.

Adding prefix (by default "rq:job:") to job id we have a key, where is job stored.

Using DEL on each key we purge our database job by 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-2043d2734b7b3796c312-9b02-4a77-be89-249aa7325c25ca65f2b8-044c-41b5-b5ac-cefd56699758896f70a7-9a35-4f6b-b122-a08513022bc5


- 2016 -

You can now use rq's empty option form command line:

/path/to/rq empty queue_name

So you can use it to empty any queue not just the failed one


none of the above solutions workedfailed Queue is not registered under queues

so I move all of the failed jobs to default Queue and use

rq empty queue_name --url [redis-url]