我正在使用RQ,我有一个包含数千项的failed队列,还有一个test队列,我创建了一个用于测试的test队列,该队列现在是空的,也是未使用的。我想知道如何从failed队列中删除所有作业,并完全删除test队列?
为基本问题道歉,但我在RQ文档中找不到这方面的信息,我对Redis和RQ都很陌生.提前感谢!
发布于 2014-07-23 16:39:48
使用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-仪表板:
$ pip install rq-dashboard启动它:
$ rq-dashboard
RQ Dashboard, version 0.3.4
* Running on http://0.0.0.0:9181/在浏览器中打开。
选择队列
单击红色按钮“空”
你就完蛋了。
Python函数清除作业
如果运行太旧的Redis ( RQ使用的命令失败),仍然可以成功地通过python代码删除作业:
代码采用队列的名称,其中有作业ids。
Usilg我们只要求一个人的工作ids。
在作业id中添加前缀(默认情况下为"rq: job :") --我们有一个键,即存储作业的位置。
在每个键上使用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发布于 2016-11-30 13:25:15
-2016年-
现在可以使用rq的empty选项表单命令行:
/path/to/rq empty queue_name因此,您可以使用它来清空任何队列,而不仅仅是失败的队列。
发布于 2020-01-21 09:18:25
上述解决方案中没有一个未在队列下注册。
因此,我将所有失败的作业移到默认队列中,并使用
rq空queue_name --url redis-url
https://stackoverflow.com/questions/24915181
复制相似问题