Какой правильный способ 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, но я не понимаю, как это можно сделать. Есть хорошие идеи, как это решить?

Вернуться на верх