2012-09-03 2 views
5

я, пытаясь развернуть Джанго проект с использованием Django, но у меня есть эти вопросы нерешенными:Джанго-сельдерей в производственной среде с несколькими серверами

  • Должен ли я запустить один celeryd для каждого веб-сервера?
  • Должен ли я запускать только один сервер RabbitMQ, на другой машине (нет), работающей с celeryd, доступной для всех моих веб-серверов? или RabbitMQ должен запускаться также на каждом из веб-серверов?
  • Как я могу использовать периодические задания, если код одинаковый на всех веб-серверах?

Благодарим за ответы.

ответ

6

Это действительно зависит от размера проекта, в идеале у вас есть RabbitMq, работники сельдерея и веб-рабочие, работающие на разных машинах.

Вам нужен только один RabbitMQ и, в конечном счете, несколько сотрудников очереди (для больших очередей требуется больше работников).

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

Конечно, если вы начинаете проект, имеет смысл держать все на том же оборудовании, и сохранить бюджет низкой и ждать трафика и денег, чтобы течь :)

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

+0

Что делать, чтобы каждый рабочий просматривал одну и ту же очередь? Я потратил много часов на поиск примера, но ничего не нашел. Благодарю. – user2372074