gpt4 book ai didi

django - 为什么我在 Heroku 上有这么多使用 CloudAMQP 的 Celery 消息?

转载 作者:行者123 更新时间:2023-12-02 01:00:22 26 4
gpt4 key购买 nike

我在 Heroku 上运行的 Django 站点正在使用 CloudAMQP 来处理其计划的 Celery 任务。 CloudAMQP 注册的消息比我的任务多得多,我不明白为什么。

例如,在过去的几个小时内,我将运行大约 150 个计划任务(其中两个每分钟运行一次,另一个每五分钟运行一次),但 CloudAMQP 控制台的消息计数增加了大约 1,300 个。

我的相关 Django 设置:

BROKER_URL = os.environ.get("CLOUDAMQP_URL", "")
BROKER_POOL_LIMIT = 1
BROKER_HEARTBEAT = None
BROKER_CONNECTION_TIMEOUT = 30
CELERY_ACCEPT_CONTENT = ['json',]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_RESULT_EXPIRES = 7 * 86400
CELERY_SEND_EVENTS = False
CELERY_EVENT_QUEUE_EXPIRES = 60
CELERY_RESULT_BACKEND = None
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

我的程序文件:

web: gunicorn myproject.wsgi --log-file -
main_worker: python manage.py celery worker --beat --without-gossip --without-mingle --without-heartbeat --loglevel=info

查看 Heroku 日志,我只能看到我期望的正在运行的计划任务数量。

RabbitMQ 概述图大多数时候看起来像这样:

RabbitMQ overview

我对 RabbitMQ 的了解还不够,无法知道其他面板是否可以阐明该问题。我不认为它们显示出任何明显的东西可以解释所有这些消息。

我至少想了解额外的消息是什么,然后是否有办法消除部分或全部消息。

最佳答案

几天前我也遇到了同样的错误。对于遇到同样问题的人,CloudAMQP 的文档建议在启动 celery 时添加一些参数:

--without-gossip --without-mingle --without-heartbeat

"This will decrease the message rates substantially. Without these flags Celery will send hundreds of messages per second with different diagnostic and redundant heartbeat messages."

事实上,到目前为止这解决了问题!最后你只会收到你发送的消息。

关于django - 为什么我在 Heroku 上有这么多使用 CloudAMQP 的 Celery 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596553/

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