如何从队列中清除Django RQ作业?

Joe*_*Joe 6 django python-rq

我觉得有点愚蠢,但它似乎没有出现在RQ文档中.我有一个"失败"的队列,其中包含数千个项目,我想使用Django管理界面清除它.管理界面列出了它们并允许我单独删除和重新排队,但我不敢相信我必须潜入django shell来批量执行它.

我错过了什么?

aug*_*men 14

Queue类有一个empty()可以像访问方法:

import django_rq
q = django_rq.get_failed_queue()
q.empty()
Run Code Online (Sandbox Code Playgroud)

但是,在我的测试中,只清除了Redis中的失败列表键,而不是作业键本身.所以你的成千上万的工作仍然会占用Redis的记忆.要防止这种情况发生,您必须单独删除作业:

import django_rq
q = django_rq.get_failed_queue()
while True:
    job = q.dequeue()
    if not job:
        break
    job.delete()  # Will delete key from Redis
Run Code Online (Sandbox Code Playgroud)

至于在管理界面中有一个按钮,你必须更改django-rq/templates/django-rq/jobs.html模板,谁扩展admin/base_site.html,似乎没有任何空间进行自定义.


Mar*_*arc 2

redis-cli 允许 FLUSHDB,非常适合我的本地环境,因为我生成了大量作业。

通过有效的 Django 集成,我将进行更新。只需添加 0.02 美元。