扭曲:连接池重新连接到不同的数据库

2024-09-27 21:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有ConnPool类,它继承自扭曲的.enterprise.adbapi.ConnectionPool类。在

class ConnPool(ConnectionPool):
    def __init__(self):  
        ConnectionPool.__init__(self, 'MySQLdb', address, user,pass, MYSQL_DB, charset='utf8', use_unicode=True, cp_min=1, cp_max=MAX_CONNECTION, cp_reconnect=True)

它可以很好地与一个数据库连接。但是,我希望它在连接丢失时连接另一个数据库。在

已检测到连接丢失,但在这种情况下,我无法管理ConnPool类来连接另一个数据库。在

我试图在特定事件发生时重新初始化ConnectionPool类,但没有成功。在

任何想法/解决方案都将不胜感激。在


Tags: self数据库trueinitaddressdefpasscp
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:47

ConnectionPool.connect,你应该在那里指你吗 注意。adbapi没有为这种情况提供逻辑,它是 不难实现一些非常愚蠢的事情,但这是行为 需要更多的关注。例如,ConnectionPool在 所有服务器都停机了?在

这里只是一个愚蠢的实现:

class ArgumentPool:

    def __init__(self, connargs, connkw):
        assert len(connargs) == len(connkw)
        self.connargs = connargs
        self.connkw = connkw

    def next(self):
        while 1:
            for args, kwds in zip(self.connargs, self.connkw.values()):
                yield args, kwds


class RRConnectionPool(adbapi.ConnectionPool):

    def __init__(self, dbapiName, ap):
        adbapi.ConnectionPool.__init__(self, dbapiName)
        self.ap = ap

    def connection(self):
        # ...
        args, kwds = self.ap.next()
        conn = self.dbapi.connect(*args, **kwds)
        # ...

相关问题 更多 >

    热门问题