我正在使用Celery,Django和RabbitMQ。我正在寻找一种自动从RabbitMQ的celery队列中清除旧邮件的方法。因此,无论何时默认情况下创建队列,都应清除所有早于x秒的消息。
这些是我在settings.py中设置的变量。
CELERY_DEFAULT_EXCHANGE = 'celery' CELERY_DEFAULT_EXCHANGE_TYPE = 'topic' CELERY_DEFAULT_ROUTING_KEY = 'celery' CELERY_DEFAULT_QUEUE = 'celery' CELERY_EVENT_QUEUE_TTL= 30
我也尝试过这样做,但是导致没有消息发送到RabbitMQ。
CELERY_QUEUES = ( Queue('celery', routing_key='celery', queue_arguments={'x-message-ttl': 30}), Queue('default', routing_key='default', queue_arguments={'x-message-ttl': 30}), )
任何想法都欢迎。
X-消息TTL在毫秒 - 不被秒。
您想在celery配置文件中放入以下内容:
from kombu import Exchange, Queue CELERY_QUEUES = [ Queue( 'celery', Exchange('celery'), routing_key = 'celery', queue_arguments = { 'x-message-ttl': 30000 } ) ]