RQ - 清空和删除队列

 Annia000 发布于 2023-01-01 15:10

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

对基本问题道歉,但我在RQ文档中找不到相关信息,而且我对Redis和RQ 都是全新的...提前致谢!

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

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

    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
    

    2023-01-01 15:12 回答
  • - 2016 -

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

    /path/to/rq empty queue_name
    

    因此,您可以使用它来清空任何队列而不仅仅是失败的队列

    2023-01-01 15:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有