У меня есть проект 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-й базе данных и реализует их напрямую. Я нашел такие технологии, как сельдерей, редис, крон, но я изо всех сил стараюсь выбрать правильный способ сделать это, учитывая эффективность времени. Каков более правильный способ сделать это?