def _connect(self, database, encoding=None, **kwargs):
"""Attempt to connect to the DB.
In case it's not available, 'fail over' to the back-up stand-by DB and propagete
it to the master DB.
"""
try:
return super()._connect(database, encoding=encoding, **kwargs)
except OperationalError as ex:
logging.info("Failing over to %s", self.failover_host)
if "could not connect to server" in ex.args[0] or "could not translate host name" in ex.args[0]:
kwargs["host"] = self.failover_host
conn = super()._connect(database, encoding=encoding, **kwargs)
with conn.cursor() as cr:
cr.execute("SELECT promote_standby();")
self.connect_kwargs[
"host"], self.failover_host = self.failover_host, self.connect_kwargs["host"]
return conn
else:
raise ex
failover.py 文件源码
python
阅读 38
收藏 0
点赞 0
评论 0
评论列表
文章目录