我正在使用RQ,我有一个failed队列,其中有数千个项目,还有一个test队列,我在不久前为测试而创建,现在是空的和未使用的。我想知道如何从failed队列中删除所有作业,并完全删除test队列?很抱歉问这个基本问题,但是我在RQ docs中找不到相关信息,而且我对Redis和RQ都是全新的......提前感谢!
failed
test
iq0todco1#
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 Jmeter 板 :
$ pip install rq-dashboard
格式启动 它 :
$ rq-dashboard RQ Dashboard, version 0.3.4 * Running on http://0.0.0.0:9181/
格式在 浏览 器 中 打开 。选择 队列点击 红色 按钮 " 清空 "你 就 完 了 。
如果 你 运行 的 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
格式
91zkwejq2#
现在可以使用rq的empty选项形成命令行:
empty
/path/to/rq empty queue_name
因此,您可以使用它清空任何队列,而不仅仅是失败的队列
aelbi1ox3#
以上解决方案都不起作用失败队列未在队列下注册因此我将所有失败的作业移到默认队列中,并使用rq空队列名称--url [redis-url]
neekobn84#
监视工具rqinfo可以清空失败的队列。只需确保您有一个活动的virtualenv,并安装了rq,然后运行$ rqinfo --empty-failed-queue有关详细信息,请参阅rqinfo --help。
rqinfo
rq
$ rqinfo --empty-failed-queue
rqinfo --help
ckocjqey5#
你可以登录到Redis清除所有队列登录用户@用户:~$redis-cli输入以下命令并按Enter键
冲洗口
你就完成了编辑:这将删除存储在redis中的所有内容
bvn4nwqk6#
以下是使用django_rq清除失败作业注册表的方法:
django_rq
import django_rq from rq.registry import FailedJobRegistry queue = django_rq.get_queue("your_queue_with_failed_jobs") registry = FailedJobRegistry(queue=queue) for job_id in registry.get_job_ids(): registry.remove(job_id)
ykejflvf7#
- 2022年-
我也在纠结这个问题,这是一段适合我的代码。它循环遍历队列名称(在我的例子中是“default”和“low”),获取每个队列的所有失败作业并删除它们
import django_rq from rq.registry import FailedJobRegistry from redis import Redis from rq.job import Job from django.conf import settings redis = Redis(host=settings.REDIS_HOST, port=settings.REDIS_PORT) queues = ["default", "low"] for q in queues: queue = django_rq.get_queue(q) registry = FailedJobRegistry(queue=queue) for job_id in registry.get_job_ids(): job = Job.fetch(job_id, connection=redis) registry.remove(job)
kx1ctssn8#
默认情况下,'rq'作业的前缀为'rq:job'。因此,您可以使用以下命令从redis中删除这些作业:
redis-cli KEYS rq:job:* | xargs redis-cli DEL
8条答案
按热度按时间iq0todco1#
# 使用 rq 清除
RQ 提供 了 使 任何 队列 为 空 的 方法 :
中 的 每 一 个
如果
test
队列 仍然 存在 , 您 可以 对 它 执行 相同 的 操作 。# 使用
rq-dashboard
进行 清理安装 rq Jmeter 板 :
格式
启动 它 :
格式
在 浏览 器 中 打开 。
选择 队列
点击 红色 按钮 " 清空 "
你 就 完 了 。
# Python 函数 清除 作业
如果 你 运行 的 Redis 版本 太 旧 , 在 RQ 使用 的 命令 上 失败 , 你 仍然 可以 通过 python 代码 成功 删除 作业 :
程式 码 会 取得 队列 的 名称 , 其中 是 工作 ID 。
使用 LPOP 时 , 我们 会 逐一 询问 工作 ID 。
将 前缀 ( 默认 情况 下 为 " rq : job : " ) 添加 到 作业 ID , 我们 就 有 了 一 个 键 , 其中 存储 了 作业 。
在 每个 键 上 使用 DEL , 我们 逐个 清除 数据 库 作业 。
格式
91zkwejq2#
- 2016年
现在可以使用rq的
empty
选项形成命令行:因此,您可以使用它清空任何队列,而不仅仅是失败的队列
aelbi1ox3#
以上解决方案都不起作用失败队列未在队列下注册
因此我将所有失败的作业移到默认队列中,并使用
rq空队列名称--url [redis-url]
neekobn84#
监视工具
rqinfo
可以清空失败的队列。只需确保您有一个活动的virtualenv,并安装了
rq
,然后运行$ rqinfo --empty-failed-queue
有关详细信息,请参阅
rqinfo --help
。ckocjqey5#
你可以登录到Redis清除所有队列
登录
用户@用户:~$redis-cli
输入以下命令并按Enter键
冲洗口
你就完成了
编辑:这将删除存储在redis中的所有内容
bvn4nwqk6#
以下是使用
django_rq
清除失败作业注册表的方法:ykejflvf7#
- 2022年-
我也在纠结这个问题,这是一段适合我的代码。
它循环遍历队列名称(在我的例子中是“default”和“low”),获取每个队列的所有失败作业并删除它们
kx1ctssn8#
默认情况下,'rq'作业的前缀为'rq:job'。因此,您可以使用以下命令从redis中删除这些作业: