几个小时后 Django + PyMySQL 抛出 "MySQL server has gone away"

Django + PyMySQL throws "MySQL server has gone away" after a couple of hours

我的 Django 1.6 应用程序 (Python3) 中有一个模块像守护进程一样运行,但它在几个小时后抛出此错误 运行:

OperationalError: (2006, "MySQL server has gone away (BrokenPipeError(32, 'Broken pipe'))")

自动重新连接调用 MYSQL_OPT_RECONNECT 的 MySQL 连接中似乎存在一个标志,我应该设置它吗?在哪里?我正在使用 PyMySQL 连接器(通过 运行 pymysql.install_as_MySQLdb() in the main __init__.py)。

我们必须在抛出错误时捕获错误,并调用django.db.connection.close()重新连接。

from django.db import connection
from django.db.utils import OperationalError
...
try:
    function_that_uses_database_connection()
except OperationalError:
    connection.close()
    function_that_uses_database_connection()

虽然我没有找到让它自动运行的方法,但它完成了工作。