22

現在、セロリでdjangoを使用していますが、すべて正常に動作します。

ただし、サーバーが過負荷になった場合に、現在スケジュールされているタスクの数を確認して、タスクをキャンセルする機会をユーザーに提供できるようにしたいと考えています。

どうすればこれを達成できますか?

私はredisをブローカーとして使用しています。

私はちょうどこれを見つけました: セロリのキュー内のタスクのリストを取得します

それはどういうわけか私の問題に関連していますが、タスクをリストする必要はありません。タスクを数えるだけです:)

4

5 に答える 5

25

ブローカーが として構成されていてredis://localhost:6379/1、タスクが一般的なceleryキューに送信されている場合、次の方法で長さを取得できます。

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

または、シェル スクリプトから (モニターなどに適しています):

$ redis-cli -n 1 -h localhost -p 6379 llen celery
于 2013-10-02T04:09:26.240 に答える
6

アプリで既に redis を構成している場合は、これを試すことができます。

from celery import Celery

QUEUE_NAME = 'celery'

celery = Celery(app)
client = celery.connection().channel().client

length = client.llen(QUEUE_NAME)
于 2015-09-11T07:36:01.953 に答える