Работа с очередью Redis внутри многоузлового приложения Python Celery с помощью Docker Swarm - PullRequest
0 голосов
/ 04 января 2019

Так что это более или менее теоретический вопрос.

Допустим, у нас есть многоузловая установка Swarm, состоящая из 3 узлов.Теперь мы установили сервис Python, который использует Celery и Redis в качестве брокера сообщений.Таким образом, в сущности, в составе приложения есть также служба перерисовки реплик из 3 узлов.

Теперь, поскольку эта служба Redis действует как посредник сообщений, если мы используем имя службы только для разрешения DNS внутри моего приложения Pythonтогда как Docker Swarm или мое приложение узнают, на каком узле redis будет задача, которую я поместил в очередь?

Я имею в виду, что сетка маршрутизации будет направлять трафик только для определенной службы на любом из узлов, которые имеют эту службу.Теперь мое приложение Python запустило задачу асинхронно и поместило ее в очередь на повторное выполнение.Поэтому, как только это будет сделано, я хочу, чтобы мое приложение запрашивало redis, чтобы получить результаты.Но как он узнает, какой узел имеет результаты.

Это похоже на липкие сессии?Пожалуйста, дайте мне знать, если что-то не понятно.

1 Ответ

0 голосов
/ 08 января 2019

Обычно мы используем этот сценарий использования, когда redis sentinel находится перед кластером redis, чтобы включить автоматический переход на другой ресурс и указывать сельдерею на redis-sentinel в качестве посредника ( это довольно просто в сельдерее 4.2.0 ),Если вам удобно выполнять и обрабатывать аварийное переключение с Redis вручную в вашем кластере, тогда вы просто указываете celery на службу Redis.

...