Как настроить несколько приложений Django для использования одной и той же базы данных? - PullRequest
0 голосов
/ 05 февраля 2019

Когда я настраиваю свои приложения Django для использования контейнеров, у меня остается проблема, когда я пытаюсь разделить свои процессы на меньшие изображения.Как я могу разбить логику на более мелкие компоненты, которые работают в своих собственных контейнерах, но при этом получают доступ к одной и той же базе данных?

Я понимаю, что в «истинной» среде микросервисов мне нужна отдельная база данных для каждой службы.Однако рассмотрим ситуацию, когда у меня есть немного логики, которая считывает данные из базы данных и создает файл CSV.

Я хотел бы разбить это на отдельный тип образа, который содержит только эту логику и получает специальное монтирование диска для записи файла.Остальные приложения остаются без сохранения состояния.

Таким образом, у меня осталось два необходимых приложения django: одно, которое считывает и записывает данные в свою базу данных, и другое, которое я могу использовать для ускорения и запуска отчетов против этого.та же база данных.

Вариант 1: Это то, что я продолжаю использовать то же приложение, где модели уже определены.Я раскручиваю один контейнер для обработки и раскручиваю другой контейнер с тем же изображением, чтобы использовать его для отчетов.Хотя это сработало бы, похоже, что это был бы лучший способ изолировать поведение от конкретного приложения.

Вариант 2: ... Какой у меня второй вариант?

1 Ответ

0 голосов
/ 06 февраля 2019

Используете ли вы docker network в своей среде?

Предложение 1: (просто, но исправьте вашу ситуацию) дублируйте файл models.py в двух приложениях.Подключитесь к базе данных, используя имя базы данных контейнера.Если вам нужно вызвать функцию (def) между контейнерами, вы можете использовать вызов API, используя DRF (Django Rest Framework) или чистый Django с JsonResponse.Не забудьте создать токены для доступа к этим «Звонкам Api»

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...