gpt4 book ai didi

django - 如何使用 TTL 设置 Celery,以便从队列中清除旧消息?

转载 作者:行者123 更新时间:2023-12-01 15:25:05 25 4
gpt4 key购买 nike

我正在使用 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-message-ttl 以 毫秒 - NOT SECONDS 为单位。

你想在你的 celery 配置文件中加入这样的东西:

from kombu import Exchange, Queue

CELERY_QUEUES = [
Queue(
'celery',
Exchange('celery'),
routing_key = 'celery',
queue_arguments = {
'x-message-ttl': 30000
}
)
]

关于django - 如何使用 TTL 设置 Celery,以便从队列中清除旧消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20919663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com