- основное приложение, которое запускается, к примеру, вот так uvicorn application.main:app --host 0.0.0.0 --port 8000
- второе приложение использует общие модели/сервисы/зависимости, но имеет отдельные эндпоинты/лайфспан и запускается uvicorn application.second_app.main:app --host 0.0.0.0 --port 8001
- третье запускается аналогично: uvicorn application.third_app.main:app --host 0.0.0.0 --port 8002
FastAPI - одна кодовая база, но разные приложения
Привет!
Не первый раз на работе возникает необходимость реализовать отдельные сервисы в FastAPI(при этом связанные одними сервисами/моделями) и при этом исключить дублирование кода.
Stackoverflow и прочие сервисы не дают решения данного вопроса и не первый раз реализовываю вот такую структуру приложения:
├───application
│ ├───api
│ ├───core
│ ├───documentations
│ ├───second_app
│ │ └───api
│ │ └───main.py
│ ├───third_app
│ │ └───api
│ │ └───main.py
│ ├───exceptions
│ ├───models
│ ├───orm
│ ├───repositories
│ ├───schemas
│ ├───services
│ ├───settings
│ ├───tests
│ ├───utils
│ └───main.py
При этом получаем:
Теперь можно разнести их либо на одной машине на разных портах, либо на разных, либо в разных контейнерах и тд..