錯誤顯示您要連接的數據庫未接受請求或正在偵聽主機「192.168.2.1」。
在postgresql.conf
文件,更改listen_addresses = '*'
讓我再細說,你應該做的事情,
- 在
settings.py
也信息添加有關routers.py
數據庫的信息:
settings.py
DATABASES = {
'default': {},
'master': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': 5432,
},
'slave': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': 5432,
}
}
SLAVE_DATABASES = ['slave']
DATABASE_ROUTERS = ['path.to.your.routers.MasterSlaveRouter']
- 創建
routers.py
將處理切換讀取和寫入設置中提到的數據庫中的要求:如果是這樣,現在
routers.py
from django.conf import settings
import socket
def test_connection_to_db(database_name):
try:
db_definition = getattr(settings, 'DATABASES')[database_name]
s = socket.create_connection(
(db_definition['HOST'], db_definition['PORT']), 5)
s.close()
return True
except:
return False
class MasterSlaveRouter(object):
def db_for_read(self, model, **hints):
"""
Reads go to a randomly-chosen slave.
"""
if test_connection_to_db('master'):
return 'master'
return 'slave'
def db_for_write(self, model, **hints):
"""
Writes always go to master.
"""
if test_connection_to_db('master'):
return 'master'
return 'slave'
def allow_relation(self, obj1, obj2, **hints):
"""
Relations between objects are allowed if both objects are
in the master/slave pool.
"""
db_list = ('master', 'slave')
if obj1._state.db in db_list and obj2._state.db in db_list:
return True
return None
def allow_migrate(self, db, model):
"""
All non-auth models end up in this pool.
"""
return True
您主人失望了,奴隸已經起來了。請求將被相應轉移,反之亦然。確保任何一個數據庫已啓動。
HTH! :)