Какой правильный способ SET aurora_replica_read_consistency в django?
Я ищу правильный способ подключения к Aurora из резервного приложения django. У меня есть приложение django, которое работает в нескольких регионах. Кластер Aurora в AWS настроен так, чтобы иметь доступный для записи мастер в одном регионе и доступную только для чтения реплику с переадресацией записи в другом регионе. Это якобы позволяет приложениям "прозрачно" писать в БД, доступную только для чтения.
Это не очень прозрачно, потому что требует для каждой сессии SET aurora_replica_read_consistency=SESSION
.
Я надеялся добиться этого в сессии DATABASE файла настроек django следующим образом:
DATABASES = {
'default': {
'ENGINE': 'django_prometheus.db.backends.mysql',
'NAME': 'mydb',
'USER': 'admin',
'PASSWORD': 'DB_PASSWORD',
'HOST': 'DB_HOST',
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET aurora_replica_read_consistency=SESSION',
},
},
}
Однако это приводит к ошибке на aurora master, который доступен для записи. В ошибке говорится, что вы можете установить эту переменную только на реплике, доступной только для чтения. Т.е. мой контейнер django даже не загружается на master. Я попробовал поработать с сигналами подключения; однако я не нашел способа заставить его выполнять команду SET в качестве первого действия после любого нового подключения django к БД. Сигналы, похоже, требуют, чтобы каждое приложение имело обработчик сигналов. Моя отказоустойчивость настроена так, что мастер Aurora может находиться в любом регионе. Т.е. нелегко определить, подключается ли этот клиент django к мастеру или реплике. Я могу пойти дальше и игнорировать ошибку от init_command, но я не понимаю, как это можно сделать. Есть хорошие идеи, как это решить?