2016-09-20 12 views
1

Herokuで動作している私のDjangoサイトは、CloudAMQPを使用してスケジュールされたCeleryタスクを処理しています。 CloudAMQPは私がタスクを持っているよりも多くのメッセージを登録していますが、私はその理由を理解していません。HerokuのCloudAMQPでセロリのメッセージがたくさんあるのはなぜですか?

例えば、過去数時間のうちに、約150のスケジュールされたタスク(1分に1回、5分に1回)が実行されますが、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。スタックオーバーフローを使用するのに慣れていることがあります。 –

答えて

0

数日前に同じエラーが発生しました。

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

「これは、実質的にメッセージレートを減少しますこれら のフラグがないとセロリは数百を送信します:あなたがセロリを起動すると、同じ問題を取得する人のために 、CloudAMQPのドキュメントは、いくつかの引数を追加することをお勧めします診断メッセージと冗長ハートビートメッセージを別々ので1秒間に送信することができます。

実際には、これまでのところの問題が修正されました。そして、ついにあなたのメッセージだけが送られました。

関連する問題