我觉得问这个问题有点愚蠢,但它似乎不在documentation for RQ中。我有一个“失败”队列,里面有数千个项目,我想用Django管理界面清除它。管理界面列出了这些项目,并允许我单独删除和重新排队它们,但我无法相信我必须潜入Django shell来批量完成它。
我错过了什么?
我觉得问这个问题有点愚蠢,但它似乎不在documentation for RQ中。我有一个“失败”队列,里面有数千个项目,我想用Django管理界面清除它。管理界面列出了这些项目,并允许我单独删除和重新排队它们,但我无法相信我必须潜入Django shell来批量完成它。
我错过了什么?
6条答案
按热度按时间izkcnapc1#
Queue
类有一个empty()
方法,可按如下方式访问:然而,在我的测试中,这只是清除了Redis中的失败列表键,而不是作业键本身。所以你的数千个作业仍然会占用Redis的内存。为了防止这种情况发生,你必须逐个删除这些作业:
至于在管理界面中有一个按钮,你必须改变
django-rq/templates/django-rq/jobs.html
模板,它扩展了admin/base_site.html
,似乎没有给予任何定制的空间。lb3vh1jj2#
redis-cli允许FLUSHDB,伟大的为我的本地环境,因为我产生了一个bizzallion工作.
随着Django集成的工作,我会更新。只是增加了0.02美元。
qvk1mo1f3#
由于@Augusto-men方法似乎不再起作用了,这里有另一种解决办法:
您可以使用原始连接删除失败的作业。只需遍历rq:job键并检查作业状态。
w6mmgewl4#
可以使用以下代码示例按名称清空任何队列:
或者甚至有Django命令:
ujv3wf0j5#
由于RQ更新实现了
Registries
,其他答案已过时。现在,您需要执行此操作来循环并删除failed作业。这也适用于任何特定的
Registry
。Source
nfeuvbwi6#
您可以使用以下命令从命令行清空队列:
rq empty [queue-name]
运行
rq info
将列出所有队列。