2016-04-10 8 views
0

私は、それぞれがCeleryを実行している5ノードのキューを提供する2つのrabbitmqノードを持っています。 Celery rate_limitは制限を課さない

10労働者の各

は、私は各セロリにRATE_LIMITをブロードキャスト

4の同時性とセロリを実行するノード、レートが課さ1ではないようです。

私はRATE_LIMITをブロードキャストするために使用するコード:

app = Celery('tasks', broker="amqp://%s:%[email protected]%s/%s" % (config.rabbit_user, config.rabbit_pass, rabbit_ip, config.rabbit_vhost)) 

app.control.broadcast('rate_limit', arguments={'task_name': 'tasks.read', 'rate_limit': '100/s'}) 

に私の理解から、この制限は、労働者のインスタンスごとではなくグローバル、そのため私は、10個のノードの各セロリの労働者のための毎秒100件のメッセージを期待してい。通常、彼らは毎秒約500-600を消費していますが、ブロードキャスト後はすべてのノードで約1.6 /秒を得ます。ログを確認したところ、5秒ごとに約8件のメッセージが表示されます。

制限を200/sに上げると、私は2/sから2.4/sの間になります。

答えて

関連する問題