FastAPI + Django: нормально ли такое делать и если да, то каким образом?
Есть проект на FastAPI, в котором нет базы данных, данные хранятся в оперативной памяти с периодической сериализацией и записью в файл. FastAPI изначально был выбран из-за нативной поддержки OpenAPI. Сейчас проект начал требовать усложнения: нужно прикрутить базу данных + админку.
Насколько хороша идея обращаться к Django-проекту из проекта на FastAPI средствами REST? Какие могут быть подводные камни? Идея заменить FastAPI-проект на Django-проект выглядит довольно затратной, т.к. логика работы приложения уже отработана в FastAPI-проекте.
На мой взгляд, лучше доделать работу с базой в нынешнем приложении, чем делать два приложения, да ещё и на разных технологиях.
Можно и ORM впилить, если хочется. Можно даже Django ORM без остальной части Django. Но лучше рассмотреть вариант использования совместимых с asyncio ORM, например, tortoise-orm.
Django ORM умеет async, кроме транзакций, их надо будет заворачивать в sync_to_async, кроме этого, нужно что-то городить для сериализации
tortoise-orm хорош, там уже есть решения для сериализации и он нативно async, а django использовать как админка, код модели получать из inspectdb, единственно если потребуется сложная логику работы с моделью, то придется в двух местах делать
для tortoise-orm есть попытка написать admin приложение, но там пока какая-та дичь получилась
Ну к примеру берете докер.
Делаете нужные модели на Django, админку к моделям.
На FastAPI получаете данные и записываете данные - можно через ту же Django ORM.
На докере просто стартуете один контейнер для админки - приложение Django, второй контейнер - для FasAPI,
и на веб сервере разруливаете запросы - /api - в контейнер с FastAPI, /admin - в контейнер с Django.