扭曲的adbapi cp_reconnect无法正常工作

d51*_*512 4 python mysql twisted

我有一个与MySQL数据库对话的旋风Web服务.如果暂时没有活动(我猜的时间超过8小时),我会在重新启动Web服务时收到以下错误:

_mysql_exceptions.OperationalError :( 2006,'MySQL服务器已经消失')

我看过这篇关于cp_reconnect的帖子,我在创建连接池时实现了这个:

pool = adbapi.ConnectionPool("MySQLdb", host=self.host, user=self.user,
    passwd=self.password, db=self.database, cursorclass=MySQLdb.cursors.DictCursor,
    cp_reconnect=True)
Run Code Online (Sandbox Code Playgroud)

我本来以为这会修复它,似乎有一段时间了,但是现在我看到服务器上没有活动一段时间后"MySQL服务器已经消失"错误了.

我已经阅读了关于wait_timeout的这个MySQL文档,我可以用我想的那样修复它,但是为什么cp_reconnect功能对我不起作用?我正在解释adbapi文档意味着如果您指定cp_reconnect参数,那adbadpi将处理MySQL发送的错误并为您重新尝试查询.所以基本上你不必直接在代码中处理错误.我误解了吗?

小智 5

几年前我一直在寻找解决方案.我在网络上的某个地方找到的解决方案是子类化ConnectionPool和覆盖_runInteraction,您强制重新连接特定的错误代码.快速谷歌搜索引导我访问这个网站:http://www.gelens.org/2009/09/13/twisted-connectionpool-revisited/,包含代码.我没有必要考虑再次死掉MySQL连接.

  • 好奇如果@ user1334007听到任何回复但是为了公众的利益,上面的链接现在已被破坏但可通过Wayback Machine访问:http://web.archive.org/web/20101111172427/http://www.gelens.org/ 2009/09/13 /双绞线连接池-重新 (3认同)