我正在使用RQ,我有一个failed
包含数千个项目的队列,另一个test
队列我创建了一段时间用于测试现在是空的和未使用的.我想知道如何从failed
队列中删除所有作业,并test
完全删除队列?
对基本问题道歉,但我在RQ文档中找不到相关信息,而且我对Redis和RQ 都是全新的...提前致谢!
RQ提供了使任何队列为空的方法:
>>> from redis import Redis >>> from rq import Queue >>> qfail = Queue("failed", connection=Redis()) >>> qfail.count 8 >>> qfail.empty() 8L >>> qfail.count 0
test
如果您仍然存在,您可以对队列执行相同的操作.
rq-dashboard
安装rq-dashboard:
$ pip install rq-dashboard
启动它:
$ rq-dashboard RQ Dashboard, version 0.3.4 * Running on http://0.0.0.0:9181/
在浏览器中打开.
选择队列
点击红色按钮"清空"
你完成了.
如果你运行过于旧的Redis,它在RQ使用的命令上失败,你仍然可以通过python代码删除作业:
代码采用队列的名称,其中是作业ID.
Usilg LPOP我们要求一个工作ID.
将前缀(默认为"rq:job:")添加到作业ID我们有一个键,其中存储作业.
在每个键上使用DEL,我们按作业清除数据库作业.
>>> 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
您现在可以使用rq的empty
选项表单命令行:
/path/to/rq empty queue_name
因此,您可以使用它来清空任何队列而不仅仅是失败的队列