FastAPI — это современный, быстрый веб-фреймворк для создания API на Python. Он предназначен для разработки веб-приложений и серверов API с минимальными усилиями и очень высокой производительностью. В данной статье мы рассмотрим быстрый деплой FastAPI приложения с использованием нашего сервиса развертывания.
Для чего используется FastAPI
-
Для создания API:
-
FastAPI идеально подходит для создания RESTful API, GraphQL API и других типов веб-сервисов.
-
Позволяет легко определять эндпоинты, обрабатывать входящие запросы и возвращать ответы.
-
Для высокопроизводительных приложений:
-
FastAPI основан на асинхронной модели работы (
async/await), что делает его одним из самых быстрых фреймворков для Python. -
По скорости он сравним с GoLang.
-
Для автоматической генерации документации:
-
FastAPI автоматически генерирует интерактивную документацию API (через Swagger UI и ReDoc).
-
Для валидации данных:
-
Автоматически проверяет типы данных, поступающих в запросах, и возвращает ошибки, если данные не соответствуют ожидаемым типам.
-
Для асинхронных задач:
-
Поддерживает асинхронные операции (отдает моментальный ответ и далее параллельно выполняем фоновую отложенную задачу).
-
Поддержка WebSocket.
-
Для удобной разработки:
-
Имеет простой синтаксис.
-
Для интеграции с OpenAPI и JSON Schema:
-
Фреймворк автоматически генерирует схемы OpenAPI, что позволяет легко интегрировать ваш API со сторонними инструментами.
Кейсы: кому и как использовать FastAPI
-
Разработчикам корпоративных систем и персональных сайтов. FastAPI прекрасно подходит для быстрой интеграции с базами данных и сторонними сервисами. Он имеет встроенную поддержку валидации данных и асинхронной обработки запросов.
-
Web-дизайнерам для сайтов с динамическими данными. FastAPI кардинально упрощает разработку backend для таких проектов, сводя настройку к минимуму. К тому же он облегчает получение данных для frontend-части.
-
Разработчикам API и микросервисов. FastAPI создан для работы с асинхронными приложениями и высоконагруженными системами. Он идеально подходит для разработки API и микросервисов.
-
Студентам и начинающим разработчикам. FastAPI крайне прост в освоении и подходит для быстрого создания учебных проектов и прототипов.
Для понимания простоты реализации серверов на FastAPI посмотрите пример получения актуальных курсов валют:
Как видно из примера, вы создали полезное FastAPI-приложение (микросервис) с путем http://ваш_домен/api/kurs/rub буквально за несколько секунд.
Но мы не будем останавливаться на простых примерах. В этой статье мы создадим собственное приложение — хранилище переменных окружения для серверов (легковесный аналог Vault и AWS Secrets Manager) с небольшой админкой и доступом к переменным через API.
Наш проект будет реализован с использованием HTML + JavaScript + FastAPI. Назовём наш микросервис ENV Cloud Manager.
Давайте потратим 10 минут на развертывание сервера и изучение кода. Если затем вы решите опубликовать приложение в интернете, ознакомьтесь с разделом «Деплой приложения в публичном пространстве».
А теперь посмотрим на интерфейс приложения.
Главное окно:

Редактирование ключей:

Весь код рассматриваемого приложения доступен в репозитории GitHub.
App Platform
и тестирования проектов из GitHub, GitLab, Bitbucket
или любого другого git-репозитория.
Разворачиваем готовый сервер FastAPI
Установка Python и необходимых библиотек
Для полноценной разработки нам необходимо Установка Python и pip зависит от операционной системы. Ниже приведены инструкции для различных ОС. В нашем примере использована версия 3.11.
Скачайте Python:
- Перейдите на официальный сайт Python.
- В разделе «Downloads» выберите последнюю версию Python для Windows.
- Скачайте установщик (рекомендуется выбирать версию с «Windows Installer»).
Запустите установщик:
- В процессе установки обязательно поставьте галочку на пункте «Add Python to PATH» (это добавит Python в системные переменные среды).
- Нажмите «Install Now» для установки Python и pip.
Проверка установки:
Откройте командную строку (Win + R, введите cmd и нажмите «Enter»).
Введите команду:
Команда выведет установленную версию Python.
Проверьте установку pip:
Создание виртуального окружения
Для начала давайте создадим проект. Чтобы не засорять ваш компьютер новыми фреймворками, важно правильно организовать его техническую базу. Один из ключевых моментов — создание отдельного пространства для управления зависимостями.
Для этого мы будем использовать встроенный инструмент Python — venv, который создаёт собственную версию интерпретатора Python и набор установленных библиотек. Разделение окружений помогает избежать конфликтов между зависимостями, особенно когда разные проекты требуют разных версий одних и тех же библиотек.
Благодаря такой изоляции вы можете быть уверены, что обновление пакетов в одном проекте не повлияет на работоспособность других. По сути, создается отдельная папка внутри проекта, содержащая Python и все установленные для работы библиотеки.
Как создать виртуальное окружение
Откройте терминал.
Перейдите в директорию вашего проекта:
Создайте виртуальное окружение:
Активируйте виртуальное окружение:
Устанавливаем FastAPI-приложение (шаблон)
Создайте необходимые директории:
Скачайте файл requirements.txt с необходимыми для проекта зависимостями:
Пакеты, которые мы установим с помощью requirements.txt (полный список):
|
Пакет |
Версия |
Описание |
|
|
0.7.0 |
Расширения для аннотированных типов в Python, используются в Pydantic. |
|
|
4.8.0 |
Асинхронная многопоточная библиотека, работает с |
|
|
1.17.1 |
Интерфейс для взаимодействия с C-кодом, используется |
|
|
8.1.8 |
Библиотека для создания CLI-приложений на Python. |
|
|
44.0.0 |
Криптографическая библиотека, предоставляет SSL/TLS, хеширование, шифрование. |
|
|
0.115.7 |
Современный веб-фреймворк для создания API, основанный на Pydantic и Starlette. |
|
|
0.14.0 |
HTTP/1.1-протокол в виде библиотеки, используется |
|
|
3.10 |
Поддержка Internationalized Domain Names (IDN) в Python. |
|
|
2.22 |
C-парсер на Python, используется |
|
|
2.10.6 |
Валидация данных и управление типами, активно применяется в FastAPI. |
|
|
2.27.2 |
Оптимизированное ядро Pydantic, написанное на Rust. |
|
|
1.3.1 |
Определяет, в каком асинхронном окружении выполняется код ( |
|
|
2.0.37 |
ORM для работы с базами данных в Python. |
|
|
0.45.3 |
ASGI-фреймворк, на котором построен FastAPI. |
|
|
4.12.2 |
Дополнительные аннотации типов для совместимости со старыми версиями Python. |
|
|
0.34.0 |
ASGI-сервер для запуска FastAPI и других ASGI-приложений. |
Выполните команду для установки зависимостей:
Далее введите в терминале следующие команды:
Структура приложения:
Как видите, для реализации проекта нам нужно всего три файла. Админка реализована в admin.html, вся backend-часть — в main.py, а index.html служит простой заглушкой.
При этом весь этот пакет (и фронт, и бэк) работает на FastAPI без каких-либо дополнительных утилит.
Запуск приложения
Для запуска нашего приложения в качестве фонового сервера воспользуемся пакетом Uvicorn — это быстрый ASGI-сервер для Python, предназначенный для запуска веб-приложений, написанных с использованием асинхронных фреймворков, таких как FastAPI.
Перед запуском настройте собственные значения переменных
ALLOWED_IPS,VALID_TOKENS,ADMIN_USERNAME,ADMIN_PASSWORDв файлеmain.py.
Выполните следующую команду в терминале:
main:app означает, что мы запускаем файл main.py как приложение-демон, постоянно находящееся в оперативной памяти сервера и принимающее запросы.
Теперь вы можете воспользоваться админкой по адресу: http://127.0.0.1:8000/admin.
Или проверить запросы GET-, POST-, PUT- и DELETE-запросы по адресам:
-
GET
http://127.0.0.1:8000/api/variables/— получить список переменных -
GET
http://127.0.0.1:8000/api/variables/{key}— получить значение ключа -
PUT
http://127.0.0.1:8000/api/variables/{key}— обновить значение ключа -
DELETE
http://127.0.0.1:8000/api/variables/{key}— удалить ключ
Если вы запускаете приложение на своем публичном облачном сервере, чтобы uvicorn слушал все адреса (0.0.0.0), запустите приложение с флагом --host:
Также проверьте ограничения портов. Если, например, у вас установлен firewall ufw, то запустите в терминале следующую команду:
При первом запуске вы можете увидеть подобное сообщение:

Это сделано для безопасности. Просто добавьте свой IP-адрес (на картинке 172.17.0.1) в переменную ALLOWED_IPS и обновите страницу.
Вот и всё! Мы всего за 5 минут, с минимальным количеством кода, написали FastAPI-приложение, которое позволяет централизованно хранить настройки для Docker-контейнеров, серверов и т. д., а также раздавать их всем вашим VPS.
Деплой FastAPI-приложения в интернете
Для автоматизированного развертывания статических и динамических веб-приложений, построенных на популярных фреймворках, отлично подходит сервис Timeweb Cloud App Platform. Эта платформа предоставляет удобный функционал для деплоя приложений прямо из Git-репозитория.
После настройки вы получаете уникальный публичный URL, который позволяет быстро получить доступ к вашему приложению. Такой подход значительно экономит время и ресурсы, предлагая надёжное решение для быстрого запуска ваших проектов.
Перед тем как развернуть приложение на проде, не забудьте изменить значения переменных ALLOWED_IPS, VALID_TOKENS, ADMIN_USERNAME, ADMIN_PASSWORD в файле main.py (подробное описание их назначения приведено ниже в разделе «Изучаем код микросервиса»).
Далее загрузите (push) ваше приложение в GitHub. Для этого используйте следующие команды в терминале:
Перейдите на страницу создания Apps, выберите раздел «Backend» → «FastAPI».

Далее прокрутите страницу вниз до раздела «Репозиторий». Здесь мы подключим ваш GitHub-репозиторий для автоматического деплоя и формирования публичного URL.
Если вы впервые используете Timeweb Cloud App Platform, нажмите кнопку «Добавить аккаунт». Затем авторизуйте наш сервис в GitHub. В процессе подключения GitHub может запросить ввод PIN-кода — это одно из последних обновлений, направленных на повышение безопасности авторизации.

Если ваш Github уже привязан к нашей системе, то просто пропустите первый шаг (стрелка 1) и переходите ко второму.

Укажите ваш GitHub-репозиторий с FastAPI-приложением (стрелка 2) и нажмите кнопку «Запустить деплой» (стрелка 3). Дополнительные настройки деплоя для нашего приложения не требуются.
После этого система развернет сервер, задеплоит приложение в продакшн, создаст публичную ссылку — и вуаля! Ваш микросервис готов. Просто дождитесь завершения процесса деплоя.

Первичный запуск (деплой) сервера может занять 7–10 минут, тогда как все последующие изменения в вашем GitHub-репозитории будут применяться в течение 20–30 секунд.
После первого запуска вы увидите сообщение об ограничении доступа для вашего IP-адреса.

Вам необходимо добавить ваш IP-адрес (в нашем примере 172.17.0.1) в переменную ALLOWED_IPS и выполнить следующие команды в терминале:
После этого подождите 10-30 секунд, пока платформа Timeweb Cloud App Platform перезапустит проект. Далее обновите страницу /admin и наслаждайтесь приложением.
Изучаем код приложения на FastAPI
Внешний вид и функционал
Приложение состоит из админки и серверной части. Сначала рассмотрим backend, который как раз и реализован на основе фреймворка FastAPI.
Файл main.py содержит следующие классы и методы:
Общие классы и методы
|
|
Эти классы — просто структуры, описывающие поля, которые приходят в запросах. Используются для стандартизации названий и типов полей. |
|
|
Методы шифруют ваши данные перед записью в БД, а также расшифровывают после получения из БД. |
Классы, методы и переменные sqlite
|
|
Переменная, содержащая путь к SQLite-базе, в которой мы храним данные |
|
|
Класс cодержит модель таблицы SQLite, в которой мы храним данные |
|
|
Метод содержит сессию для работы с базой данных |
Классы, методы и переменные Fastapi
|
|
Переменные содержат список IP-адресов, с которых вы будете обращаться к вашему сервису, а также Bearer-токен, который необходимо передавать в заголовке (header) запроса для предотвращения несанкционированного доступа. |
|
|
Метод для ограничения доступа к сервису из JavaScript-запросов. |
|
|
Метод производит проверку доступа к API с разрешенных IP-адресов (в то же время доступ к статическим страницам открыт для всех) |
|
|
Метод обеспечивает авторизацию в |
|
|
Методы генерируют статические страницы админки и главной страницы. |
|
|
Метод отдает по запросу список всех сохраненных в БД ключей без их значений. |
|
|
Метод принимает запрос на добавление данных в БД. |
|
|
Метод принимает запрос на изменение значения конкретного ключа в БД. |
|
|
Метод принимает запрос на удаление конкретного ключа из БД. |
Как это работает
При обращении к вашему сервису внешним запросом метод add_middleware выполняет проверку:
- Для API-запросов — проверяет, есть ли IP-адрес в списке разрешенных.
- Для HTML-страниц (например, админки или заглушки) — переводит запрос на выдачу статической страницы.
Применение этого метода обеспечивает высокий уровень безопасности вашего приложения:
- Защищенные разделы становятся недоступными для пользователей, не прошедших аутентификацию, а также для запросов с неавторизованных IP-адресов.
- Дополнительная защита реализуется через Bearer-токен, который должен присутствовать во всех запросах к системе.
Такая многоуровневая система безопасности помогает минимизировать риски.
После проверки FastAPI возвращает либо запрошенные данные через API, либо статическую HTML-страницу (например, админку).
Подготовили для вас выгодные тарифы на облачные серверы
477 ₽/мес
657 ₽/мес
Заключение
Итак, мы реализовали легкий и удобный микросервис для управления переменными окружения. ENV Cloud Manager демонстрирует, как с помощью FastAPI можно быстро и эффективно создавать полноценные веб-приложения с REST API, админкой и удобным интерфейсом.
Этот проект легко адаптировать для реальных условий — например, для использования в небольших командах или стартапах.
Как можно расширить функциональность
Рекомендуем вам развивать свое приложение, добавляя новые возможности. Попробуйте реализовать:
- Расширенную аутентификацию (например, с использованием OAuth2).
- Логирование изменений переменных.
- Интеграцию с системами мониторинга (например, Prometheus и Grafana).
Создавая собственные API, вы на практике убедитесь, насколько FastAPI удобен и позволяет решать задачи с минимальным количеством кода.
Этот проект может стать отправной точкой для дальнейших экспериментов и изучения новых технологий.
