У меня есть приложение машинного обучения , которое использует флягу для предоставления API (для производства это не очень хорошая идея, но даже если я буду использовать Django в будущем идея вопроса не должна измениться.)
Основная проблема заключается в том, как обслуживать несколько запросов к моему приложению.Несколько месяцев назад celery
был добавлен, чтобы обойти эту проблему.Количество рабочих в celery
, которое было создано, равно числу ядер, присутствующих в машине.Для очень немногих пользователей это выглядело нормально и некоторое время находилось в производстве.
Когда число одновременных пользователей увеличилось, стало очевидно, что мы должны провести тестирование производительности на нем.Получается: он может обрабатывать 20 пользователей для 30 ГБ и 8 ядер машины без аутентификации и без какого-либо внешнего интерфейса.Что не похоже на хорошее число.
Я не знал, что есть такие вещи, как: сервер приложений, веб-сервер, сервер моделей.При поиске этой проблемы: gunicorn
было хорошим приложением Python для сервера приложений.
- Должен ли я использовать
gunicorn
или любой другой сервер приложений вместе с celery
и почему - Если я удаляю
celery
и использую только gunicorn
с приложением, я могу достичь параллелизма.Я где-то читал, celery
не подходит для машинного обучения приложений. - Каковы цели
gunicorn
и celery
.Как мы можем добиться лучшего из обоих?
Примечание : Основная цель - максимизировать параллелизм.Во время обслуживания в производстве будет добавлена аутентификация.В процессе между ними может вступить в действие одно интерфейсное приложение.