Django: как синхронизировать 2 дБ? - PullRequest
0 голосов
/ 07 января 2020

У меня есть проект Django, который подключен к 2 дБ.

models.py

class ModelOne(models.Model):
    db = "firstDB"
    attr = someValue

class ModelTwo(models.Model):
    db = "secondDB"
    attr = {cannot do ForeignKey(ModelOne)}

Я хотел бы сделать их синхронными, чтобы таблица / данные изменялись на 1-й базе данных, а также на 2-й. Насколько я знаю, Django не позволяет создавать модель с атрибутом, который ссылается на другую БД.

Я написал скрипт, который проходит через 1-ю БД и создает экземпляры модели во 2-й БД:

import os, django, requests
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "diary.settings")
django.setup()

URL = "APIendpointToCreateModelTwo"
data = models.ModelOne.objects.all()
for school in schools:
   data = {...}
   requests.post(url = URL, data = data)

Работает хорошо, однако мне нужно, чтобы это делалось периодически (например, один раз в день) или напрямую вносило изменения во 2-й БД, когда 1-й изменяется.

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

...