это как обёртка для веб-сервера который запускает сам веб-сервер в своём потоке или же это отдельная прога?
Ну смотри. Gunicorn - это по сути оркестратор на минималках, который управляет несколькими воркерами твоего приложения: балансирует траффик, регулирует таймауты, управляет количеством воркеров и тп. Самое главное, с помощью одного конфига у тебя появляется не одна копия приложения, а несколько. Понятно, что появляются доп расходы на мастера, который и занимается маршрутизацией, но по сути это не сильно важно, на фоне других оверхедов (сам питон). Если у тебя кубернетес или что-нибудь такое, то ровно тоже самое есть и в нем, просто более навороченное, поэтому внутри контейнеров gunicorn не сильно нужен в таком сценарии. А если разворачиваешь как стендэлон, то почему бы и нет? Меньше телодвижений, чтобы запустить не одну копию приложения, а несколько. При чем мониторить надо всего лишь gunicorn, а не десятки отдельных инстаносов.
Считай, что воркер - это один инстанс твоего приложения. Не важно что за приложение - aiohttp или джанго, все одно. Мастер управляет этими воркерами - создает, контролирует, маршрутизирует и тп. Где и как работает воркер - опреляется его типом. Для aiohttp воркеры запускаются в разных процессах, где 1 процесс = 1 воркер = 1 инстанс aiohttp приложения. Мастер управляет воркером.
Обсуждают сегодня