Запустить Celery на том же сервере, что и django?
Я запускаю свое приложение Django в среде Elastic Beanstalk с балансировкой нагрузки. Я хочу добавить процесс Celery daemon для следующих действий:
- Загрузите файлы на S3 в фоновом режиме и отправьте успешный ответ на мое приложение для Android
- Отправьте SMS пользователям, чтобы уведомить их о предстоящих EMI (используя сельдерей)
- Мое приложение использует Google Cloud vision для некоторых функций, для запуска которых требуется 10 секунд, поэтому я могу запустить их в фоновом режиме
Теперь я хочу знать, является ли правильный способ развертывания сельдерея на том же сервере, на котором работает Django с использованием Amazon SQS? Если да, то как мне это настроить?
А если несколько серверов на Elastic Beanstalk могут вызвать дублирование задач из-за удара сельдерея?
1 ответ
Неважно, где вы начнете свой сельдерей: на том же сервере или на отдельном, оба способа являются правильными. Неважно, что вы будете использовать для сельдерея. Если вы используете какой-либо общий redis или базу данных между всеми celeries, то нет никаких шансов, что задачи будут дублироваться, но если у каждого сельдерея есть свой собственный backend, это приведет к хаосу и катастрофе.