sql >> データベース >  >> NoSQL >> Redis

DjangoCeleryがタスク数を取得

    ブローカーに依存しないセロリを使用して、キュー内のメッセージの数を取得する方法は次のとおりです。

    connection_or_acquireを使用する 、セロリの内部接続プールを利用することで、ブローカーへのオープン接続の数を最小限に抑えることができます。

    celery = Celery(app)
    
    with celery.connection_or_acquire() as conn:
        conn.default_channel.queue_declare(
            queue='my-queue', passive=True).message_count
    

    Celeryを拡張して、この機能を提供することもできます。

    from celery import Celery as _Celery
    
    
    class Celery(_Celery)
    
        def get_message_count(self, queue):
            '''
            Raises: amqp.exceptions.NotFound: if queue does not exist
            '''
            with self.connection_or_acquire() as conn:
                return conn.default_channel.queue_declare(
                    queue=queue, passive=True).message_count
    
    
    celery = Celery(app)
    num_messages = celery.get_message_count('my-queue')
    


    1. gkeは透過的な巨大ページを無効にできません...許可が拒否されました

    2. MongoDBで$allを使用して配列値を照合するための複数の$elemMatch式?

    3. redisストリームのTTLを定義する方法は?

    4. Redis Pub / Subで競合するコンシューマーはサポートされていますか?