Đây là cách bạn có thể nhận được số lượng thư trong một hàng đợi bằng cách sử dụng cần tây không phải là nhà môi giới.
Bằng cách sử dụng connection_or_acquire
, bạn có thể giảm thiểu số lượng kết nối mở với nhà môi giới của mình bằng cách sử dụng tổng hợp kết nối nội bộ của cần tây.
celery = Celery(app)
with celery.connection_or_acquire() as conn:
conn.default_channel.queue_declare(
queue='my-queue', passive=True).message_count
Bạn cũng có thể mở rộng Celery để cung cấp chức năng này:
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')