Couldn't load this page.

← Блог
Engineering

Хостинг Python-приложений: деплой Django, Flask и FastAPI

Yura Oak
Yura Oak21 августа 2026 г.
Резюмировать с помощью:

Хостинг Python-приложения начинается с процесса, который вашему приложению нужен для работы. Django и Flask обычно используют WSGI-сервер; FastAPI — ASGI-сервер. Celery-воркер или запланированный скрипт имеют другой жизненный цикл. Выбирайте хост, который поддерживает эти процессы, а также нужные вашему приложению базу данных и хранилище.

Lizard публикует это руководство. Мы проверили документацию по ссылкам фреймворков и провайдеров 9 сентября 2026 года. В примерах используются явные имена модулей, которые нужно адаптировать под свой проект.

Выбирайте среду выполнения до выбора хоста

ПриложениеПродакшн-процессДругие требования для проверки
Django с WSGIGunicorn или другой поддерживаемый WSGI-серверБаза данных, миграции, статические файлы и загрузки
Django с асинхронными возможностямиПоддерживаемый ASGI-серверОбработка соединений и совместимость зависимостей приложения
FlaskПродакшн WSGI-серверПуть импорта приложения или фабрика, секреты и база данных
FastAPIUvicorn или другой ASGI-серверЗапуск задач, конкуренция и подключения к базе данных
Celery-воркерОтдельный потребитель очередиБрокер, бэкенд результатов при использовании, повторные попытки и завершение
Скрипт или batch-заданиеПроцесс, который запускается и завершаетсяРасписание, таймаут, статус выхода и долговечный вывод

Сервер разработки предназначен для разработки. Смотрите официальное руководство по деплою Django, руководство по продакшну Flask и рекомендации по воркерам FastAPI.

Варианты хостинга Python по потребностям

ХостПочему стоит рассмотретьПроверить перед выбором
LizardВеб-сервисы и воркеры с управляемыми сервисами данных и операциями через CLIНастройки рантайма, подключение БД и измеренное потребление ресурсов
RailwayНесколько сервисов в одном проектеПотребление всех сервисов и кредит тарифа
RenderПубличные планы веб-инстансов и воркеровОтдельная стоимость БД и ограничения бесплатных сервисов
PythonAnywhereРабочий процесс хостинга с фокусом на PythonПоддержка WSGI/ASGI, исходящий доступ и лимиты задач на вашем плане
Cloud RunHTTP-сервисы, джобы или пулы воркеровТип ресурса, режим биллинга, конкуренция и холодные старты
Fly.ioМашины в выбранных регионахРазмеры машин, хранилище и сетевые сборы
DigitalOcean App PlatformУправляемый деплой из исходников или образаПоддержка сборки, компоненты приложения и цены на БД
HerokuПривычный рабочий процесс деплоя PythonТекущий план, аддоны и направление продукта
VPSПрямое управление серверомОбновления, управление процессами, TLS, бэкапы и восстановление

Используйте сравнение PaaS для более широкого решения о хостинге. Python-значок в таблице фич недостаточен для подтверждения поддержки воркеров или базы данных.

Бесплатный хостинг Python требует лимита нагрузки

Бесплатный тариф может ограничивать исходящие запросы, усыплять неактивный веб-процесс, лимитировать выполнение задач или включать только пробный кредит. Эти условия могут подойти для демо и не подойти для приёмника вебхуков или воркера очереди.

Проверьте правила бесплатных сервисов Render и возможности бесплатного аккаунта PythonAnywhere. Для Cloud Run страница цен описывает бесплатное использование рядом с тарифицируемыми ресурсами. База данных, реестр образов или сетевое использование могут остаться за пределами лимита, на который вы смотрите.

Протестируйте первый запрос после периода тишины и убедитесь, что запланированная или фоновая работа всё ещё выполняется. Описывайте бесплатный вариант через эти лимиты, а не как неограниченный хостинг.

Команды сборки и запуска

Для проекта, использующего requirements.txt, установите его зафиксированные зависимости:

python -m pip install -r requirements.txt

Используйте пакетный менеджер и локфайл, уже лежащие в репозитории, если проект использует uv, Poetry или другой инструмент. Включите продакшн-сервер в зависимости. Не полагайтесь на пакет, установленный только на вашем ноутбуке.

Для Django, где myproject/wsgi.py определяет приложение:

gunicorn myproject.wsgi:application --bind "0.0.0.0:${PORT:-3000}"

Для Flask, где app.py экспортирует app:

gunicorn app:app --bind "0.0.0.0:${PORT:-3000}"

Для FastAPI, где main.py экспортирует app:

uvicorn main:app --host 0.0.0.0 --port "${PORT:-3000}"

Эти команды ожидают, что оболочка развернёт переменную порта. JSON-массив Docker CMD не делает этого автоматически. Используйте либо документированную поддержку переменных рантаймом, либо shell-обёртку, либо небольшую программу, читающую окружение.

Задавайте количество воркеров исходя из замеров и доступной памяти. Больше процессов — больше памяти и соединений с БД; добавление воркеров не заменяет проверку медленного запроса или блокирующей задачи.

Минимальный контейнер FastAPI

Для приложения с main.py и зафиксированным requirements.txt, содержащим FastAPI и Uvicorn, этот Dockerfile запускает один серверный процесс:

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN useradd --create-home appuser
USER appuser
EXPOSE 3000
CMD ["sh", "-c", "exec uvicorn main:app --host 0.0.0.0 --port ${PORT:-3000}"]

Выбирайте версию Python, совместимую с проектом. Положите .env, локальные виртуальные окружения, кэши и Git-данные в .dockerignore. В этом примере не устанавливаются лишние системные пакеты; добавляйте только те, что нужны зависимостям.

На Lizard можно принести свой Dockerfile или использовать сборку из исходников. Руководство по деплою описывает варианты. Вашему приложению нужен небольшой health-эндпоинт, а также стоит протестировать эндпоинт, задействующий реальные зависимости.

Проверенный на Lizard деплой FastAPI

Наш публичный пример FastAPI имеет запись деплоя от 9 сентября 2026 года. Тест использовал коммит df522c1, собранный из GitHub в eu-west-lim-a, с портом 8000 и командой запуска Uvicorn в Procfile. Использовались Python 3.13, FastAPI 0.141.1 и Uvicorn 0.52.4. Ручные переопределения сборки или запуска не задавались.

Опубликованная запись проверки сообщает о шести пройденных проверках через публичный HTTPS URL:

ЗапросНаблюдаемый результат
GET /healthHTTP 200 с {"status":"ok"}
GET /docsHTTP 200; API-интерфейс использует /openapi.json
GET /openapi.jsonHTTP 200; схема содержит маршруты health и echo
POST /echo с JSON-объектомHTTP 200 с тем же объектом
POST /echo с JSON-массивомHTTP 422 для неверного типа тела
GET /no-such-routeHTTP 404

Откройте живой health-эндпоинт, попробуйте API-интерфейс или следуйте руководству по деплою FastAPI.

Эти результаты покрывают деплой и HTTP-поведение для небольшого приложения без базы данных. Они не измеряют аптайм, пропускную способность или полное время деплоя. Та же запись даёт показание CLI в 11:48 UTC: примерно 0,034 ГБ памяти и примерно $0,00051/час в стоимости ресурсов. Это мгновенное показание, а не месячный счёт; приведённое показание использует тарифы, действовавшие в тот момент. Текущий хостинг Lizard использует pay as you go без ежемесячной подписки; хранилище, трафик и комиссии за платёж могут добавиться к итогу. Приведённый выше Dockerfile — отдельный пример и не воспроизводит точную конфигурацию того деплоя.

Django, Postgres и Celery требуют отдельных проверок

Подключите Managed Postgres через переменную, которую читают настройки Django. Запускайте миграции как контролируемый шаг релиза, а не самостоятельно в каждом веб-воркере. Настройте обработку статических файлов и дайте загруженным файлам долговечное хранилище.

Запускайте Celery как отдельный сервис с тем же соответствующим кодом приложения и своей командой запуска. Настройте брокер явно, например через Managed Redis, если приложение использует Redis. Проверьте повторные попытки, обработку дублирующих задач и завершение перед приёмом продакшн-нагрузки.

Для сервера, которым вы управляете сами, используйте пошаговое руководство по Django на VPS. Для управляемого воркера см. справочник по деплою воркера.

Оцените всё Python-приложение целиком

Включите веб-процессы, воркеры, базу данных, хранимые файлы, бэкапы, трафик и план, нуженный команде. Railway измеряет потребление и применяет оплачиваемый план к использованию. Render публикует планы инстансов. PythonAnywhere сейчас указывает Developer за $10/месяц; сверьте входящие фичи с вашим приложением. Источники: Railway, Render, PythonAnywhere.

У Lizard нет ежемесячной подписки или платы за сервис. Для небольшого приложения, в среднем потребляющего 0,01 vCPU и 0,1 ГБ памяти за 720 часов, с 10 ГБ исходящего трафика, ресурсные сборы итого около $1,53 до комиссий за платёж и налога. Добавьте базу данных, воркер и хранилище, которые нужно вашему Python-приложению. См. разобранный пример и актуальные тарифы. Купленные средства на балансе не сгорают, поэтому тихий месяц не требует покупки нового плана.

FAQ

Можно ли хостить FastAPI на тех же сервисах, что и Django? Часто да, но FastAPI нужен ASGI-сервер. Убедитесь, что хост поддерживает вашу команду запуска и любые долгоживущие соединения или воркеры, которые использует приложение.

Стоит ли использовать runserver в продакшне? Нет. Используйте продакшн WSGI- или ASGI-сервер и проверьте рекомендации фреймворка по деплою.

Почему хост говорит, что моё приложение нездорово? Проверьте логи сборки, статус выхода процесса, путь импорта, привязанный интерфейс и ожидаемый порт. Потом проверьте отсутствующие переменные и подключения зависимостей.

Нужен ли мне Dockerfile? Не на каждом хосте. Сборщик из исходников может создать образ, но вам всё равно нужны правильные зависимости и продакшн-команда запуска.

Какой лучший хост для Python-воркера? Тот, что поддерживает жизненный цикл воркера и его зависимости. Протестируйте потребление очереди, повторные попытки и поведение при рестарте; чисто HTTP-деплой недостаточен.

Разрабатывайте с ИИ. Развёртывайте с Lizard.

Вам не нужна платформенная команда, чтобы выйти в продакшн. Весь ваш облак — в одной команде CLI.

Попробовать бесплатно
Рабочие пространства
Сервисы
Аддоны
Развёртывания

Мы используем cookie для базовой работы сайта и аналитики. См. нашу Политика cookie.