2016-09-20 82 views
1

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

例如,在过去的几个小时中,我将运行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' 

我Procfile:

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的不够了解,如果其他面板阐明这个问题光。我不认为他们显示任何明显的,将占所有这些消息。

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

+0

您随时可以通过电子邮件[email protected]与您的用户名联系,我们会查看它 –

+0

谢谢Carl。我很习惯使用Stack Overflow我有时会忘记一些地方实际上有支持:) –

回答

0

我几天前得到了同样的错误。 对于那些谁得到了同样的问题,CloudAMQP的文档建议添加一些参数当您启动芹菜:

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

“这将减少的消息速率基本上没有这些 标志芹菜将派数百名不同的 诊断和冗余心跳消息每秒消息。“

事实上,这个问题到目前为止修正了问题!你最终只会收到你发送的信息。