
Краткое содержание
- Шаг 1. Установите пакеты Python. Запустите эти команды в своем терминале:
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install "fastapi[standard]"
- Шаг 2. Напишите простое приложение FastAPI. Создайте файл
main.py
со следующим кодом:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
- Шаг 3. Запустите команду ниже, чтобы получить общедоступный URL-адрес FastAPI:
ssh -p 443 -R0:localhost:8000 qr@a.pinggy.io
В выводе вы получите URL-адрес и порт, например:
https://rnas-12-43-32-5.a.pinggy.link
Теперь вы можете получить доступ к приложению FastAPI из любого места.
Введение в FastAPI
FastAPI — это современный и высокопроизводительный веб-фреймворк для создания API с помощью Python, основанная на стандартных подсказках типов Python. Он известен своей скоростью, простотой использования и автоматическим созданием документации с помощью OpenAPI. Созданный на основе ASGI (интерфейса асинхронного серверного шлюза), FastAPI особенно подходит для обработки одновременных запросов и часто используется для создания RESTful API для веб-приложений, мобильных серверов и даже решений IoT.
Ключевые особенности FastAPI
- FastAPI сравним по скорости с Node.js и Go, что делает его идеальным для создания высокопроизводительных приложений.
- Он предлагает отличные возможности для разработчиков благодаря упрощающим разработку функциям, таким как проверка ввода и подробная обработка ошибок.
- FastAPI автоматически генерирует документацию по пользовательскому интерфейсу OpenAPI и Swagger, при минимальных усилиях гарантируя, что API хорошо документированы.
- FastAPI, созданный на основе библиотек Starlette и Pydantic, обладает высокой совместимостью с широким спектром библиотек Python.
Теперь, когда мы знаем основы FastAPI, посмотрим, как установить и протестировать его без традиционного сервера.
Запуск сервера FastAPI на локальном хосте
Шаг 1. Создайте виртуальную среду
Когда вы работаете с проектами Python, следует использовать виртуальную среду (или аналогичный механизм), чтобы изолировать пакеты, которые вы устанавливаете для каждого проекта. Чтобы создать виртуальную среду, вы можете использовать модуль venv
, который входит в состав Python.
Примечание. Если команда
python
не работает, попробуйте заменить ее наpython3
.
Эта команда создает новую виртуальную среду в каталоге с именем .venv
.
Шаг 2. Активируйте виртуальную среду
Активируйте новую виртуальную среду, чтобы любая запускаемая вами команда Python или устанавливаемый пакет использовали ее.
Для Linux, MacOS
source .venv/bin/activate
Для Windows PowerShell
.venv\Scripts\Activate.ps1
Для Windows Bash
source .venv/Scripts/activate
Обновление pip
перед установкой таких пакетов, как FastAPI, в общем хорошая практика, особенно если вы работаете в новой среде или давно не обновляли pip
.
Чтобы обновить pip
, выполните:
python -m pip install --upgrade pip
Шаг 3. Создание простого приложения FastAPI
Самый простой файл FastAPI может выглядеть так:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Шаг 4. Установите FastAPI
Чтобы начать работу с FastAPI, установите его вместе с некоторыми дополнительными зависимостями:
pip install "fastapi[standard]"
Шаг 5. Запустите приложение FastAPI
Теперь можно запустить приложение с помощью команды ниже:
fastapi dev main.py

Шаг 6. Проверьте вывод
Откройте браузер по адресу http://127.0.0.1:8000
.
Вы увидите ответ в формате JSON:
{"message": "Hello World"}

Размещаем приложение FastAPI через Pinggy
Pinggy предлагает простой и безопасный способ предоставления локальному приложению FastAPI доступ в интернет. Вам не нужны сложные настройки сервера или развертывание в облаке.
Чтобы создать туннель к локальному серверу для разработки, используйте следующую команду:
ssh -p 443 -R0:localhost:8000 qr@a.pinggy.io
Примечание. Замените порт 8000 в команде на порт, на котором работает ваш сервер.
После запуска команды Pinggy сгенерирует общедоступный URL-адрес, который может выглядеть так:
http://rnssh-103-171-246-33.a.free.pinggy.link

Когда вы вставите измененный URL-адрес в браузер, приложение FastAPI обработает запрос и вернет выходные данные в формате JSON. Они отобразятся прямо в браузере.
Преимущества использования Pinggy для хостинга FastAPI
Pinggy предоставляет разработчикам несколько уникальных преимуществ:
- Быстрая настройка. Локальное приложение FastAPI мгновенно открывается в интернете без настройки облачной инфраструктуры или развертывания сервера.
- Тестирование и демонстрации. Идеально для совместного использования приложений во время разработки или проведения живых демонстраций. Это упрощает тестирование интеграции с внешними сервисами, которым требуется общедоступный URL-адрес (например, хуки, платежные шлюзы).
- Гибкий доступ. Используя общедоступный URL-адрес Pinggy, вы можете предоставить другим людям доступ к вашему локальному приложению, не находясь с ними в одной сети.
- Встроенная безопасность. Pinggy по умолчанию поддерживает HTTPS, что помогает защитить соединение между клиентами и вашим локальным приложением.
- Удобство для разработчиков. Pinggy прост и не требует сложных настроек, что делает его доступным как для новичков, так и для опытных разработчиков.
Серверы ASGI и их роль в приложениях FastAPI
FastAPI — это веб-фреймворк ASGI. Серверы ASGI (интерфейса асинхронного серверного шлюза) необходимы для запуска приложений FastAPI, поскольку они оптимизированы для обработки асинхронной коммуникации. ASGI — развитие стандарта WSGI (интерфейса шлюза веб-сервера) специально разработан для управления средами с большим трафиком, данными в реальном времени и соединениями WebSocket. Ниже приведен обзор нескольких серверов ASGI с подробным описанием их ключевых функций и распространенных вариантов применения приложений FastAPI.
Uvicorn
Uvicorn благодаря своей простоте и скорости Uvicorn — популярный выбор для запуска FastAPI. Он поддерживает протоколы HTTP, WebSocket и HTTP/2. Известный своей низкой задержкой и высоким уровнем конкурентности, Uvicorn хорошо совместим с FastAPI, что делает его подходящим как для сред разработки, так и для сред продакшна, обрабатывающих данные в реальном времени или асинхронные процессы.
Команда запуска:
uvicorn main:app --host <ip-address> --port 8000
Hypercorn
Hypercorn предлагает универсальность благодаря поддержке HTTP, HTTP/2 и расширенных протоколов, таких как QUIC. Он может работать как в синхронном, так и в асинхронном режимах, обеспечивая гибкость приложениям с разнообразными требованиями к протоколам. Это делает Hypercorn идеальным для сложных архитектур, таких как микросервисы, которые включают в себя сочетание синхронных и асинхронных операций.
Команда запуска:
hypercorn main:app --bind <ip-address>:8000
Daphne
Daphne изначально разработан для Django Channels и особенно хорошо подходит для проектов, где приоритетом является передача данных в реальном времени, особенно с использованием соединений WebSocket. Это делает Daphne идеальным решением для таких приложений, как чат-системы, системы аналитики в реальном времени, инструменты совместной работы, где асинхронная коммуникации имеет большое значение.
Команда запуска:
daphne -b <ip-address> -p 8000 main:app
Гибридный подход
Некоторые разработчики выбирают гибридный подход, используя Uvicorn для маршрутов HTTP и Daphne для соединений WebSocket, а также применяя промежуточное ПО ASGI Lifespan или балансировщики нагрузки. Этот метод эффективно сочетает в себе скорость Uvicorn в обработке HTTP-запросов с оптимизированным управлением соединениями WebSocket от Daphne, предлагая индивидуальное решение для приложений, которым требуются как быстрые ответы HTTP, так и эффективная обработка WebSocket.
Хотя каждый из этих серверов имеет свои преимущества, Pinggy дополняет их, делает FastAPI-приложения доступными в интернете без особых усилий, а также позволяет разработчикам сосредоточиться на разработке приложений вместо настройки серверов.
После установки FastAPI нам нужно установить Uvicorn.
Выполните приведенную ниже команду, чтобы запустить приложение на локальном хосте с помощью сервера uvicorn:
uvicorn main:app --host localhost --port 8080
Pinggy предлагает самый простой способ вывести локальное ASGI-приложение в интернет без сложных настроек и развертывания в облаке.
Используйте следующую команду, чтобы настроить туннель к локальному серверу для разработки:
ssh -p 443 -R0:localhost:8000 qr@a.pinggy.io
Примечание. Замените порт 8000 в команде на порт, на котором запущен ваш ASGI-сервер.
После выполнения команды Pinggy сгенерирует публичный URL, который может выглядеть следующим образом:
http://rnssh-103-171-246-33.a.free.pinggy.link
Когда вы вставите измененный URL в браузер, ASGI-сервер будет обрабатывать запросы через приложение FastAPI и возвращать результат в формате JSON, который отобразится прямо в браузере.
Заключение
Мы рассмотрели, как разместить приложение FastAPI в интернете без традиционного сервера с помощью Pinggy. FastAPI — это эффективный фреймворк для создания высокопроизводительных API, известный простотой применения и автоматическим документированием. Мы продемонстрировали процесс установки, создали простое приложение FastAPI и рассказали, как сделать его общедоступным через Pinggy. Кроме того, мы выделили различные серверы ASGI, такие как Uvicorn, Hypercorn и Daphne, необходимые для эффективной работы приложений FastAPI, особенно при обработке асинхронной коммуникации.
В целом сочетание FastAPI с Pinggy и подходящим сервером ASGI обеспечивает быстрое и эффективное решение для развертывания API.
Читайте также:
- 17 промежуточных программ для эффективной FastAPI-разработки
- FastAPI, Flask или Streamlit: что выбрать для веб-разработки?
- Как перейти от Flask к FastAPI
Читайте нас в Telegram, VK и Дзен
Перевод статьи Pinggy: Host a FastAPI Application Without a Server