Что это простыми словами
Gunicorn — это официант между пользователями и вашим приложением.
Аналогия: вы написали веб-приложение на Python — скажем, интернет-магазин. Но само по себе оно не умеет принимать тысячи одновременных запросов от покупателей. Gunicorn — это прослойка, которая стоит перед вашим приложением, принимает входящие запросы от пользователей, раскидывает их по нескольким копиям приложения и отдаёт ответы обратно. Как официант в ресторане: он берёт заказы у посетителей, передаёт на кухню и приносит готовые блюда.
Без Gunicorn ваше приложение работало бы в одном потоке и захлебнулось бы под нагрузкой. С Gunicorn оно выдерживает реальный трафик.
Официальное определение
Теперь, когда суть понятна, вот как Gunicorn описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме — и теперь будете понимать, что за ней стоит.
«Gunicorn — это WSGI HTTP-сервер для запуска Python-приложений, основанный на pre-fork модели воркеров».
Разберём по словам. «WSGI HTTP-сервер» — стандартный способ запускать Python веб-приложения; сервер принимает HTTP-запросы (обращения от браузеров) и передаёт их приложению. «Pre-fork модель воркеров» означает, что Gunicorn запускает сразу несколько копий вашего приложения, чтобы они могли обрабатывать запросы параллельно, не мешая друг другу. Воркер — это одна такая копия.
Какую задачу решает
Когда вы разрабатываете приложение на компьютере, вы запускаете его встроенным сервером — и это нормально для разработки. Но такой сервер не предназначен для реальных пользователей: он медленный, не умеет справляться с нагрузкой и падает при ошибках.
Gunicorn решает эту проблему: он превращает ваше приложение в боевой сервис, готовый к продакшену. Он запускает несколько копий приложения одновременно, распределяет нагрузку между ними, перезапускает упавшие копии и управляет ресурсами. Благодаря этому ваше приложение выдерживает сотни и тысячи одновременных запросов.
К какой экосистеме относится
Язык — Python.
Специальность — backend-разработчик.
Фреймворки-соседи — Gunicorn работает поверх веб-фреймворков, чаще всего Django и Flask. Реже встречается связка с FastAPI, хотя там обычно берут другой сервер.
Важно понимать: Gunicorn — это не замена Django или Flask. Это инфраструктурная библиотека, которая запускает их в продакшене. Само приложение пишут на Django или Flask, а Gunicorn лишь обслуживает его запуск.
Чем заменяется
Ту же задачу — запуск Python-приложений в продакшене — решают другие серверы. Главный конкурент Gunicorn — это Uvicorn. Разница в том, что Gunicorn работает по старому стандарту (WSGI), а Uvicorn — по новому (ASGI), который поддерживает асинхронность. Если приложение написано на FastAPI или использует async/await, обычно берут Uvicorn. Если это классический Django или Flask — Gunicorn.
Главное: переход между ними дешёвый. Кто умеет работать с Gunicorn, легко освоит Uvicorn — идея та же, отличается лишь конфигурация. Это разные модели одного и того же инструмента.
Ещё существуют uWSGI, Waitress, Daphne и mod_wsgi — они решают ту же задачу, но встречаются реже.
Что не путать
Gunicorn ≠ Django или Flask. Django и Flask — это фреймворки, на которых пишут само приложение. Gunicorn — это сервер, который запускает готовое приложение в продакшене.
Gunicorn ≠ Nginx. Nginx — это веб-сервер, который стоит ещё выше и раздаёт статику, делает балансировку. Gunicorn — прослойка между Nginx и Python-приложением. Они работают вместе, а не вместо друг друга.
Gunicorn ≠ Celery. Celery — это очередь задач для фоновых операций (отправка email, обработка файлов), а Gunicorn обрабатывает HTTP-запросы. В одном проекте часто используются оба.
Gunicorn ≠ Docker. Docker упаковывает приложение в контейнер, а Gunicorn запускает его внутри этого контейнера. Они работают на разных уровнях.
Насколько это важно при отборе
Короткий ответ: обычно это НЕ повод отбраковывать кандидата.
Gunicorn — это инфраструктурная библиотека, и опыт с ней переносится на аналоги за считаные дни. Разработчик, который работал с Uvicorn или uWSGI, освоит Gunicorn без проблем. Требовать строго Gunicorn и отсеивать сильного кандидата, у которого в резюме указан Uvicorn, — классическая ошибка начинающего рекрутера.
Правильный подход: смотрите, есть ли у кандидата опыт развёртывания Python-приложений в продакшене с любым production-сервером. Если есть — этого достаточно. Конкретный инструмент — вопрос одной-двух недель адаптации.
Когда всё же стоит обратить внимание: если у кандидата вообще нет опыта с продакшн-развёртыванием и он запускал приложения только встроенным dev-сервером — это может говорить о том, что он не работал с боевыми проектами. В этом случае полезно уточнить, на каком этапе жизненного цикла находились его проекты.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.