RQ - 清空和删除队列

新手上路,请多包涵

我正在使用 RQ ,我有一个 failed 队列,其中包含数千个项目,另一个 test 队列我创建了一段时间用于测试,现在是空的和未使用的。我想知道如何从 failed 队列中删除所有作业,并删除 test 队列?

对这个基本问题表示歉意,但我在 RQ 文档 中找不到这方面的信息,而且我对 Redis 和 RQ 都是全新的……提前致谢!

原文由 Cian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 711
2 个回答

使用 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 代码成功删除作业:

该代码采用队列名称,其中是作业 ID。

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

原文由 Jan Vlcinsky 发布,翻译遵循 CC BY-SA 4.0 许可协议

- 2016 -

您现在可以使用 rq 的 empty 选项形式的命令行:

 /path/to/rq empty queue_name

所以你可以用它来清空任何队列而不仅仅是失败的队列

原文由 Or Duan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题