Ответ
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, а то будет "модуль не найден", и волнение ебать накроет с головой.