peewee mysql自动断开_peewee解决问题”OperationalError: (2006, ‘MySQL server has gone away’)”...

用过MySQL的应该都知道,MySQL默认长链接只能保持8小时,超过后就会自动断开。

在peewee中如何维持长连接呢?

解决方法比较晦涩,需要自定义一个支持重试的mixin,然后自定义一种RetryMySQLDatabase混入mixin

from peewee import *

from peewee import __exception_wrapper__

class RetryOperationalError(object):

def execute_sql(self, sql, params=None, commit=True):

try:

cursor = super(RetryOperationalError, self).execute_sql(

sql, params, commit)

except OperationalError:

if not self.is_closed():

self.close()

with __exception_wrapper__:

cursor = self.cursor()

cursor.execute(sql, params or ())

if commit and not self.in_transaction():

self.commit()

return cursor

class RetryMySQLDatabase(RetryOperationalError, MySQLDatabase):

pass

之后当作MySQLDatabase正常使用就可以了

XXX_DB = RetryMySQLDatabase(

'dbname',

host=MYSQL_HOST,

port=MYSQL_PORT,

user='user',

passwd='pass')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值