Twisted、MySQLdb 和 (2006, 'MySQL 服务器已断开连接') 使用 Twisted adbapi
在Twisted框架中,我是一个不断循环的事件处理程序,时刻在寻找新的查询来执行。我会定期检查一个SQS队列,但有时候查询之间的间隔太长,导致连接超时,这时我会收到这样的错误信息...
MySQLdb _mysql_exceptions.OperationalError: (2006, 'MySQL服务器已断开连接')
这是我的连接代码:
self.pool = adbapi.ConnectionPool("MySQLdb", self.parms['host'], self.parms['username'], self.parms['password'], self.parms['database'])
这是我用来尝试解决这个问题的逻辑:
try:
d = self.pool.runQuery(query, ())
except:
self.pool = adbapi.ConnectionPool("MySQLdb", self.parms['host'], self.parms['username'], self.parms['password'], self.parms['database'])
d = self.pool.runQuery(query, ())
print 'Reconnecting'
问题是,这个方法似乎效果不太好。所以,如果我遇到206错误,就尝试重新连接并再次执行查询。请问解决这个问题的最佳做法是什么?
谢谢
1 个回答
2
我对adbapi没有经验,不过在文档中提到的cp_reconnect参数,看起来很有希望。
所以你的连接池初始化可能会像这样:
self.pool = adbapi.ConnectionPool("MySQLdb", self.parms['host'], self.parms['username'], self.parms['password'], self.parms['database'], cp_reconnect=True)