我在 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 的了解还不够,无法知道其他面板是否能解决这个问题。我认为它们没有显示出任何可以解释所有这些信息的明显信息。
我想至少了解额外的消息是什么,然后是否有办法可以消除部分或全部。