解决 django 数据库连接 MySql 超时
后台脚本操作数据库时,如果长时间没有与数据库交互,连接会被断开。
再次使用查询的时候,由于连接实质已断开,会提示以下错误:
OperationalError: (2006, 'MySQL server has gone away')
解决方法:
from django.db import connections
# ....
# 在合适的时机,主动断开链接
# ...
connections.close_all()
或
# 只有一个连接时,这样也一样
from django.db import connection
connection.close()
主动断开链接,是有状态标识的,所以再次使用时,会重新连接数据库。
MongoDb 也有类似解决方案
以 mongoengine
举例:
import time
from mongoengine import connection
# ...
# ...
# 在合适的位置调用,断开数据库,再次链接
connection.disconnect()
time.sleep(1)
connection.connect(db=settings.MONGODB_DB_NAME, host=settings.MONGODB_HOST, connect=False)