Как запустить приложение FastAPI?

Ответ

FastAPI — это асинхронный веб-фреймворк, поэтому для его запуска требуется ASGI-сервер. Самым популярным выбором является Uvicorn.

Процесс запуска состоит из трех шагов:

1. Установка зависимостей

Установите FastAPI и ASGI-сервер Uvicorn.

pip install fastapi uvicorn[standard]

2. Создание приложения

Создайте файл, например, main.py, с минимальным приложением.

# main.py
from fastapi import FastAPI

# Создаем экземпляр приложения
app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

3. Запуск сервера

В терминале выполните команду для запуска Uvicorn, указав ему, где находится ваше приложение.

uvicorn main:app --reload

Разбор команды:

  • main: Имя файла (модуля) без расширения .py.
  • app: Имя переменной в main.py, которая содержит экземпляр FastAPI.
  • --reload: Флаг для режима разработки. Сервер будет автоматически перезапускаться при изменении кода.

После запуска сервер будет доступен по адресу http://127.0.0.1:8000, а интерактивная документация — по http://127.0.0.1:8000/docs.

Для Production: В производственной среде флаг --reload не используется. Вместо этого часто применяют менеджер процессов, такой как Gunicorn, для управления воркерами Uvicorn: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

Ответ 18+ 🔞

А, слушай, смотри, тут народ часто в ступор впадает, когда первый раз с FastAPI сталкивается. Думают: "Ну, фреймворк, установил и запустил". А тут, блядь, оказывается, что это не какой-то там старый добрый синхронный монстр, а штука асинхронная, ёпта! Значит, ему нужен специальный сервер — ASGI. И самый, блядь, популярный и простой вариант — это Uvicorn. Не пугайся, это не болезнь, а сервер.

Вот, смотри, как это делается, чтобы не облажаться. Всего три шага, проще пареной репы, если не накосячить.

Шаг первый: ставим всё, что надо.

Открываешь терминал и вгоняешь эту заклинание. Тут FastAPI сам по себе и Uvicorn, который его будет крутить.

pip install fastapi uvicorn[standard]

[standard] — это чтобы там ещё дополнительные полезные плюшки поставились для скорости. Не экономь, поставь.

Шаг второй: делаем файлик с приложением.

Создаёшь файл, хоть main.py, и пишешь туда самый простой код, чтобы проверить. Вот, смотри, как:

# main.py
from fastapi import FastAPI

# Вот тут мы рождаем наше приложение. Это как главный герой.
app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

Всё, пиздец, гений. Функция, которая на запрос к корню сайта отвечает "Hello World". Глупо, но работает.

Шаг третий, самый ответственный: запускаем эту бандуру.

Опять в терминал, и пишешь магическую команду:

uvicorn main:app --reload

А теперь, блядь, разберём, что тут вообще происходит, а то как обезьяна кнопки жать:

  • main — это имя твоего файла (main.py), только без .py. Uvicorn его ищет.
  • app — это та самая переменная из файла, в которой у тебя сидит экземпляр FastAPI(). Если назвал её my_super_app, то и писать надо my_super_app.
  • --reload — это, сука, волшебная палочка для разработки. Сервер сам перезапустится, когда ты изменишь код. В продакшене его, естественно, не используют, а то он с ума сойдёт.

Запустил — и всё, сидишь довольный. Сервер будет слушать на http://127.0.0.1:8000. Открываешь браузер, заходишь туда — видишь своё сообщение. А если зайдешь на http://127.0.0.1:8000/docs — там тебе целая интерактивная документация, как в сказке, выеденного яйца не стоит настроить!

А для продакшена, чтобы не позориться:

Тут уже --reload — это путь в никуда. Обычно используют Gunicorn как надсмотрщика, который будет несколько воркеров Uvicorn держать. Команда выглядит примерно так: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

Вот и вся наука. Главное — не перепутай main и app, а то будет "модуль не найден", и волнение ебать накроет с головой.