Добавить в корзинуПозвонить
Найти в Дзене

FastAPI 1: Get started

Инициализация Начнём с создания виртуальной среды. Какой есть выбор? Poetry Интересный факт - три раза я собеседовался в Яндекс на различные роли в различные продукты, и ни один из собеседующих "сеньёров" либо не знал, что это такое, либо, цитата: "я не разобрался, с ним". Тут по накатанной, заходим на официальный сайт - https://python-poetry.org/docs/ и следуем инструкциям. Если вы на Windows (как я), то советую использовать опцию установки через pipx. Это убережёт ваши нервы, если вы захотите переустановить poetry в будущем. В конце - `poetry --version` Создание проекта 4. На выходе у нас в папке создастся файл `pyproject.toml` Настройка проекта Здесь тоже опираемся на официальные доки FastAPI - https://fastapi.tiangolo.com/#installation Так как у нас теперь есть poetry, то в корне папки, где есть `pyproject.toml`, прописываем: `poetry add fastapi uvicorn pydantic==2.* pydantic_settings` Создаём файлы - `.env', `main.py`, `settings.py` и `run_service.py` Пишем код settings.py from p
Оглавление

Инициализация

Начнём с создания виртуальной среды. Какой есть выбор?

  • Anaconda/Conda - жёсткий overkill, не слушайте тех, кто советует начинать с них, тем более усложняет процесс деплоя.
  • venv - встроенный в python, немного устаревший. Требует слишком много действий для активации - зайди в папку, активируй, установи модули, создай req.txt

Poetry

Интересный факт - три раза я собеседовался в Яндекс на различные роли в различные продукты, и ни один из собеседующих "сеньёров" либо не знал, что это такое, либо, цитата: "я не разобрался, с ним".

Тут по накатанной, заходим на официальный сайт - https://python-poetry.org/docs/ и следуем инструкциям. Если вы на Windows (как я), то советую использовать опцию установки через pipx. Это убережёт ваши нервы, если вы захотите переустановить poetry в будущем.

В конце - `poetry --version`

Создание проекта

  1. Создаём папку и назовём её - `fastapi_template`
  2. Запускаем cmd в этой папке и пишем - `poetry init`
  3. Прощёлкиваем промпт:
  • Would you like to define your main dependencies interactively? - no
  • Would you like to define your development dependencies interactively? - no
  • Do you confirm generation? - yes

4. На выходе у нас в папке создастся файл `pyproject.toml`

Настройка проекта

Здесь тоже опираемся на официальные доки FastAPI - https://fastapi.tiangolo.com/#installation

Так как у нас теперь есть poetry, то в корне папки, где есть `pyproject.toml`, прописываем:

`poetry add fastapi uvicorn pydantic==2.* pydantic_settings`

  1. fastapi - фреймворк
  2. uvicorn - ASGI для запуска приложения
  3. pydantic - последняя доступная V2 версия pydantic, V1 уже устаревает, а V3 может скоро появиться
  4. pydantic_settings - в версии V2 BaseSettings переехал в отдельный модуль

Создаём файлы - `.env', `main.py`, `settings.py` и `run_service.py`

  1. .env - переменные среды для приложения
  2. main.py - обычно его ещё называют `app.py` - место инициализации FastAPI приложения
  3. settings.py - файл с настройками приложения и взаимодействия с .env
  4. run_service.py - файл запуска приложения

Пишем код

settings.py

from pydantic_settings import BaseSettings
class Settings(BaseSettings):
PORT: int
class Config:
env_file = '.env'
extra = 'ignore'
settings = Settings()

.env

PORT=8000

main.py

from fastapi import FastAPI
from settings import settings

application = FastAPI()

@application.get('/test')
def return_test():
return {'message': 'ok'}

run_service.py

import uvicorn
from settings import settings

def start_uvicorn():
uvicorn.run("main:application", host="0.0.0.0", port=settings.PORT, reload=True)


if __name__ == "__main__":
start_uvicorn()

Запускаемся

  1. `poetry shell`
  2. `python run_service.py`
  3. Открываем http://localhost:8000/docs
  4. Видим наш swagger

Читать на будущее

  • Что такое poetry
  • Что такое pydantic
  • Что такое uvicorn
  • Что такое FastAPI