Peewee MySQL服务器已经消失了

时间:2017-07-27 08:40:20

标签: python peewee

有没有办法捕获此异常并重新初始化连接?

或者可能调整peewee以避免此异常。

3 个答案:

答案 0 :(得分:2)

根据此Link您应该手动关闭连接。否则peewee不会关闭它。

db = MySQLDatabase('database_name', user='www-data', charset='utf8mb4')

# this is not necessary, because peewee open the connection automatically
def before_execute_any_query():
    db.connect()

# after execute all queries and complete the action
def after_execute_query():
    db.close()

长时间连接保持打开状态而没有任何使用时会发生此错误。

答案 1 :(得分:1)

MySQL定义了一个空闲超时,此后服务器将终止空闲连接。长期存在的小矮人连接会发生这种情况。

要在发生此错误(或其他几个相关错误)后自动尝试重新连接,应使用playhouse.shortcuts中的ReconnectMixin帮助程序。

它定义了几个错误条件,应重新打开并重试连接:

from peewee import MySQLDatabase
from playhouse.shortcuts import ReconnectMixin

class ReconnectMySQLDatabase(ReconnectMixin, MySQLDatabase):
    pass

db = ReconnectMySQLDatabase('my_app', ...)

答案 2 :(得分:-1)

您可以从peewee的扩展库:剧场使用池化的mysql连接。参见docs