Я не хочу использовать встроенные функции базы данных для репликации.Поэтому я пытаюсь настроить репликацию базы данных (только операции add
, update
, delete
) на уровне приложения djnago .
Я настроил multi-dB insettings.py
Таким образом, файл настроек выглядит как
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': config['DB_NAME'],
'USER': config['DB_USER'],
'PASSWORD': config['DB_PASSWORD'],
'HOST': config['DB_HOST'],
'PORT': config['DB_PORT'],
},
'tableau': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'tableau',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'localhost',
'PORT': 5432,
},
}
Я могу читать и писать из обеих баз данных, например
from myapp.model import People
# writing to db
People.objects.create(name='alok', location='India') # onto defalut db
People.objects.using('tableau').create(name='alok', location='India') # onto replication db
# reading from db
People.objects.filter(name='alok') # from default db
People.objects.using('tableau').filter(name='alok') # from replication db
Мне необходимо сохранить обе базы данныхсинхронно (они должны иметь одинаковые данные).Я хочу синхронизировать обе базы данных, используя сигналы djnago вроде django.db.models.signals.post_save
и django.db.models.signals.post_delete
Например, если я запускаю
People.objects.create(name='alok2', location='India2')
Тогда такая запись должнасоздать в другой базе данных также.
Как написать функцию приемника для обработки этих сигналов?И где я должен сохранить эту функцию приемника?