@rodion4dev

Почему Uvicorn советуют запускать через gunicorn?

Привет!

Может кто-то знает почему в документации по Uvicorn советуют запускать ASGI приложение через gunicorn, используя uvicorn worker'ы? Это исключительно из-за управления процессами или uvicorn не считается надёжным для боевых окружений...?

А если приложение запускается внутри docker контейнера (средствами docker-compose) - нужен ли вообще менеджмент процессов от gunicorn, если этим занимается docker-compose? Может в таком случае стоит запускать uvicorn'ом напрямую?

Спасибо!
  • Вопрос задан
  • 6538 просмотров
Решения вопроса 1
@deliro
Потому что uvicorn - это не менеджер процессов. Он запускает ровно один процесс, в котором будет один ивент луп, который будет всё крутить на одном ядре. Если у тебя 4ядерный проц на сервере, то для полной утилизации ресурсов нужно запустить как минимум 4 таких uvicorn’ов. Для этого gunicorn здесь и нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@RastyazhenkoAV
Uvicorn работает в несколько потоков ( config.workers )
server = Server(Config)
if server.config.workers > 1:
  app = Multiprocess(server.config, target=server.run, sockets=[server.config.bind_socket()]).run
else:
  app = server.run

app()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы