Giter VIP home page Giter VIP logo

fastapi_async_template's Introduction

Структура проекта

Общая структура

В корне проекта находятся следующие директории:

  • alembic Содержит настройки и файлы миграций alembic.
  • assets Директория для статических файлов проекта. Например, шрифты или изображения.
  • docker Содержит файлы, необходимые для запуска проекта внутри контейнеров docker.
  • src Директория с исходным кодом проекта.
  • storage Папка для файлов, которые генерируются в процессе работы кода. Например, логи, изображения, xls, csv и т.д.

Директория src

Директория src содержит в себе основной исходный код проекта:

  • modules Папка с модулями. Каждый модуль отвечает за отдельный функционал приложения.
  • db.py Файл конфигурации и инициализации подключения к БД.
  • main.py Файл, отвечающий за запуск всего приложения. Инициализирует FastAPI, его роуты и middleware. Содержит глобальные обработчики exception.
  • routers.py Файл, отвечающий за подключение роутов из модулей. Каждый раз при создании нового модуля, необходимо подключать его роуты в данном файле.

Структура модуля

Директория модуля может иметь следующую структуру:

  • exceptions Содерждит в себе все исключения, которые может вызывать модуль.
  • jobs Фоновые задачи, которые выполняются по расписанию. За даннуб логику отвечает библиотека apscheduler. Инициализация фоновых задач происходит в момент запуска FastAPI (событие startup) в main.py.
  • middlewares Middleware модуля. Глобальные middleware необходимо подключать в main.py (https://fastapi.tiangolo.com/tutorial/middleware/). Локальные middleware (работающие только для некоторых роутов), можно подключать через Depends.
  • models Модели модуля.
  • requests Содержит классы запросов pydantic.
  • responses Содержит классы ответов pydantic на запросы.
  • routes Содержит роуты модуля. Отвечает за реализацию основной логики модуля. Модуль может иметь несколько файлов c роутами для разделения функционала. Например, модуль для работы с пользователями может иметь файлы register.py для работы с логикой регистрации и файлы user.py, который содержит функционал для уже зарегистрированного пользователя.
  • services Вспомогательные сервисы модуля.
  • router.py Используется для подключения всех роутов модуля.

Запуск проекта для локальной разработки

Запуск проекта происходит через docker. Для этого надо выполнить команду из папки проекта:

docker compose -f .\docker\local\docker-compose.yml up -d

Генерация миграций alembic

Для автоматической генерации файлов миграций необходимо выполнить команду внутри контейнера приложения:

alembic -c alembic/alembic.ini revision -m "migration description" --autogenerate

Каждый раз при добавлении новой модели необходимо импортировать ее в env.py (например, from modules.module1.models.user import User), для того, чтобы alembic сгенерировал миграцию.

fastapi_async_template's People

Contributors

antvch avatar staksor avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.