маршрутизация базы данных Django: автоматический переход на другой ресурс? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть приложение, написанное в среде Django, которое черпает базу данных PostgreSQL.

Поскольку мы очень чувствительны к простоям и избыточности, база данных использует потоковую репликацию на два сервера с горячим резервированием. Однако, поскольку в настоящее время он работает, когда основная БД отключается, я должен вручную изменить адрес сервера базы данных в settings.py для переключения Django.

Я пока не очень знаком с маршрутизацией базы данных Django, поэтому не знаю, как это сделать, но можно ли настроить все три базы данных в Django так, чтобы слой маршрутизации автоматически определить, какой из них в настоящее время является активным мастером, и соответственно направить его запросы?

(Во время выполнения было бы идеально, но я с радостью остановлюсь на «при запуске» и добавлю строку в документ процедур, чтобы перезапустить вассала uwsgi при реагировании на сбой базы данных).

1 Ответ

0 голосов
/ 22 мая 2019

Вы можете использовать несколько баз данных, используя Django . ORM имеет действительно хорошую поддержку.Это возможно с settings.py.Также возможно установить базу данных по умолчанию, которая будет использоваться Django (по умолчанию).

Это из документации

DATABASES = {
            'default': {
                'NAME': 'app_data',
                'ENGINE': 'django.db.backends.postgresql',
                'USER': 'postgres_user',
                'PASSWORD': 's3krit'
            },
            'users': {
                'NAME': 'user_data',
                'ENGINE': 'django.db.backends.mysql',
                'USER': 'mysql_user',
                'PASSWORD': 'priv4te'
            }
        }

ключи из DATABASES dict - это всего лишь "псевдонимы" .

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * QuerySet * * * * * * * * * * * * * * * * * 10 * * * * * * * * * * * * * * * * * * * * * * * * 10 * * *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...