Запустить Celery на том же сервере, что и django?

Я запускаю свое приложение Django в среде Elastic Beanstalk с балансировкой нагрузки. Я хочу добавить процесс Celery daemon для следующих действий:

  • Загрузите файлы на S3 в фоновом режиме и отправьте успешный ответ на мое приложение для Android
  • Отправьте SMS пользователям, чтобы уведомить их о предстоящих EMI (используя сельдерей)
  • Мое приложение использует Google Cloud vision для некоторых функций, для запуска которых требуется 10 секунд, поэтому я могу запустить их в фоновом режиме

Теперь я хочу знать, является ли правильный способ развертывания сельдерея на том же сервере, на котором работает Django с использованием Amazon SQS? Если да, то как мне это настроить?

А если несколько серверов на Elastic Beanstalk могут вызвать дублирование задач из-за удара сельдерея?

1 ответ

Решение

Неважно, где вы начнете свой сельдерей: на том же сервере или на отдельном, оба способа являются правильными. Неважно, что вы будете использовать для сельдерея. Если вы используете какой-либо общий redis или базу данных между всеми celeries, то нет никаких шансов, что задачи будут дублироваться, но если у каждого сельдерея есть свой собственный backend, это приведет к хаосу и катастрофе.

Другие вопросы по тегам