Сельдерей: отключить сердцебиение между рабочими - PullRequest
0 голосов
/ 14 мая 2018

Я работаю над процедурой обработки данных в Celery с бэкэндом и брокером Redis. Многие работники (~ 200) взаимодействуют с брокером, чтобы получить задачи и выполнить их. Тем не менее, все мои работники посылают друг другу сигналы сердцебиения, которые заполняют их журналы всевозможной лжи, как это:

[2018-05-13 15:38:00,737: INFO/MainProcess] missed heartbeat from celery@d12chas387.crc.nd.edu
[2018-05-13 15:38:00,737: INFO/MainProcess] missed heartbeat from celery@d12chas530.crc.nd.edu
[2018-05-13 15:38:00,737: INFO/MainProcess] missed heartbeat from celery@d12chas531.crc.nd.edu
[2018-05-13 15:38:00,738: INFO/MainProcess] missed heartbeat from celery@d12chas351.crc.nd.edu
[2018-05-13 15:38:00,738: INFO/MainProcess] missed heartbeat from celery@d12chas515.crc.nd.edu
[2018-05-13 15:38:00,739: INFO/MainProcess] missed heartbeat from celery@d12chas492.crc.nd.edu

Рабочие никогда не должны взаимодействовать друг с другом напрямую, все они должны получать необходимую информацию от брокера. Можно ли отключить сердцебиение между рабочими узлами? Если так, то это плохая идея по какой-то причине, которую я пока не вижу?

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете попробовать запустить своих работников с - без сплетен , чтобы этого не происходило.Начиная с Celery 3.1, работники стали пассивно подписываться на другие рабочие события, такие как сердцебиения.

Добавлены слухи, позволяющие пользователям сельдерея использовать преимущества общения рабочих, например, перенаправлять задачи лучшему работнику, но это нормально отключить.это если нет причин для рабочих общаться.Вы можете прочитать больше о том, что такое рабочие сплетни / почему они были представлены здесь: Celery 3.1 Что нового .

Вы также можете добавить опцию - без смешения , чтобы отключить синхронизацию рабочих при запуске.

Также этот вопрос кажется связанным: сельдерей пропустил сердцебиение (on_node_lost)

...