failover.py 文件源码

python
阅读 38 收藏 0 点赞 0 评论 0

项目:NZ-ORCID-Hub 作者: Royal-Society-of-New-Zealand 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号