一尘不染

Django Celery获取任务计数

redis

我目前正在将celery与django结合使用,并且一切正常。

但是,如果服务器超载,我希望能够通过检查当前计划了多少个任务,使用户有机会取消任务。

我怎样才能做到这一点?

我正在使用Redis作为代理。

这在某种程度上与我的问题有关,但是我不需要列出任务,只需数一下它们即可:)


阅读 574

收藏
2020-06-20

共1个答案

一尘不染

如果您的代理配置为redis://localhost:6379/1,并且您的任务已提交到常规celery队列,则可以通过以下方式获得长度:

import redis
queue_name = "celery"
client = redis.Redis(host="localhost", port=6379, db=1)
length = client.llen(queue_name)

或者,从shell脚本(适用于监视器等):

$ redis-cli -n 1 -h localhost -p 6379 llen celery
2020-06-20