Краткое содержание

  1. Шаг 1. Установите пакеты Python. Запустите эти команды в своем терминале:
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install "fastapi[standard]"
  1. Шаг 2. Напишите простое приложение FastAPI. Создайте файл main.py со следующим кодом:
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
async def root():
   return {"message": "Hello World"}
  1. Шаг 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 предоставляет разработчикам несколько уникальных преимуществ:

  1. Быстрая настройка. Локальное приложение FastAPI мгновенно открывается в интернете без настройки облачной инфраструктуры или развертывания сервера.
  2. Тестирование и демонстрации. Идеально для совместного использования приложений во время разработки или проведения живых демонстраций. Это упрощает тестирование интеграции с внешними сервисами, которым требуется общедоступный URL-адрес (например, хуки, платежные шлюзы).
  3. Гибкий доступ. Используя общедоступный URL-адрес Pinggy, вы можете предоставить другим людям доступ к вашему локальному приложению, не находясь с ними в одной сети.
  4. Встроенная безопасность. Pinggy по умолчанию поддерживает HTTPS, что помогает защитить соединение между клиентами и вашим локальным приложением.
  5. Удобство для разработчиков. 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.

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Pinggy: Host a FastAPI Application Without a Server

Предыдущая статьяКак участие в открытых проектах помогает найти работу?
Следующая статьяXcode: шпаргалка для iOS разработчиков