Как корректно использовать django models в двух проектах?
Планируется поднимать два контейнера на сервере с общей бд. Первый - асинхронный телеграм бот, второй - веб-приложение на django. У веб-приложения прописаны модели, как правильно их встроить в бота ?
Что делал: прописывал аналогичные модели для бота и ссылался на одну и ту же таблицу. Что не нравится в этом подходе: нарушается принцип DRY, чтобы использовать в асинхронных хендлерах нужно каждый запрос оборачивать в sync_to_async.
Есть идея использовать асинхронную ORM в боте, по типу tortoise, если это, конечно, возможно. Однако также нарушается принцип DRY. Но если поразмыслить, то контейнеры не должны знать друг о друге...
Может я ошибаюсь и следует использовать мою идею и не думать о DRY или всё же лучше использовать какой-то другой вариант?
Занимаюсь похожим проектом в настоящее время. Всю асинхронную работу, по советам знатоков, вынес в отдельный микросервис. На данный момент все данные, необходимые микросервису я упаковываю в json и заливаю в redis. Микросервис в цикле читает redis и туда же пишет результаты, а django их десериализует и пишет в postgres (если это требуется). На днях планирую переехать на kafka + debezium (как только разберусь с ними). Полагаю, это то, что нужно для такого рода задач. Но и сейчас результатом очень доволен. Обсуждалось тут
И рекомендую ознакомиться со связкой kafka + debezium