Доброго дня комрады! Настраиваю связку nginx+gunicorn+memcached+postgre На данный момент уперся в использование 2х БД по принципу: Если одна не доступна использовать вторую. в setting.py
DATABASES = {
'default': {},
'users1': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'gunicorn',
'USER': 'gunicorn',
'PASSWORD': 'gunicorn',
'HOST': '10.230.40.194',
'PORT': '5432',
},
'users': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'gunicorn',
'USER': 'gunicorn',
'PASSWORD': 'gunicorn',
'HOST': '10.230.40.195',
'PORT': '5432',
}
}
DATABASE_ROUTERS = ["db_router.ProjectDbRouter"]
Далее в корне проекта нужно создать project_db_router.py Но как его правильно заполнить для моей задачи я не знаю, ибо в программировании нуб, что печально. Вот вырезка с оф сайта
class AuthRouter(object):
"""
A router to control all database operations on models in the
auth application.
"""
def db_for_read(self, model, **hints):
"""
Attempts to read auth models go to auth_db.
"""
if model._meta.app_label == 'auth':
return 'auth_db'
return None
def db_for_write(self, model, **hints):
"""
Attempts to write auth models go to auth_db.
"""
if model._meta.app_label == 'auth':
return 'auth_db'
return None
def allow_relation(self, obj1, obj2, **hints):
"""
Allow relations if a model in the auth app is involved.
"""
if obj1._meta.app_label == 'auth' or \
obj2._meta.app_label == 'auth':
return True
return None
def allow_syncdb(self, db, model):
"""
Make sure the auth app only appears in the 'auth_db'
database.
"""
if db == 'auth_db':
return model._meta.app_label == 'auth'
elif model._meta.app_label == 'auth':
return False
return None
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
'LOCATION': ['10.230.40.192:11211', '10.230.40.193:11211',]
'OPTIONS': {
'MAX_ENTRIES': 1000,
'TIMEOUT': 60,
}
}
}