lxstvayne
@lxstvayne
Люблю Python

Как корректно использовать django models в двух проектах?

Планируется поднимать два контейнера на сервере с общей бд. Первый - асинхронный телеграм бот, второй - веб-приложение на django. У веб-приложения прописаны модели, как правильно их встроить в бота ?

Что делал: прописывал аналогичные модели для бота и ссылался на одну и ту же таблицу. Что не нравится в этом подходе: нарушается принцип DRY, чтобы использовать в асинхронных хендлерах нужно каждый запрос оборачивать в sync_to_async.
Есть идея использовать асинхронную ORM в боте, по типу tortoise, если это, конечно, возможно. Однако также нарушается принцип DRY. Но если поразмыслить, то контейнеры не должны знать друг о друге...

Может я ошибаюсь и следует использовать мою идею и не думать о DRY или всё же лучше использовать какой-то другой вариант?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AlbertForest
Занимаюсь похожим проектом в настоящее время. Всю асинхронную работу, по советам знатоков, вынес в отдельный микросервис. На данный момент все данные, необходимые микросервису я упаковываю в json и заливаю в redis. Микросервис в цикле читает redis и туда же пишет результаты, а django их десериализует и пишет в postgres (если это требуется). На днях планирую переехать на kafka + debezium (как только разберусь с ними). Полагаю, это то, что нужно для такого рода задач. Но и сейчас результатом очень доволен.
Обсуждалось тут
И рекомендую ознакомиться со связкой kafka + debezium
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы