有没有办法捕获此异常并重新初始化连接?
或者可能调整peewee
以避免此异常。
答案 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