Twisted,MySQLdb和(2006,'MySQL服务器已经消失')使用Twisted adbapi

时间:2011-10-05 03:47:06

标签: python mysql timeout twisted mysql-python

在扭曲中,我是一个永久的事件循环,总是看起来要运行一个新的查询它轮询一个SQS队列,并且是在queres之间的时间足够长以超时的时候,这是我在新的时候得到的错误查询到达......

  

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 个答案:

答案 0 :(得分:2)

我没有使用 adbapi 的经验,但docs中提到的 cp_reconnect 参数看起来很有希望。

因此,您的池初始化将类似于:

self.pool = adbapi.ConnectionPool("MySQLdb", self.parms['host'], self.parms['username'], self.parms['password'], self.parms['database'], cp_reconnect=True)