Django + PyMySQL抛出了#34; MySQL服务器已经消失了#34;几个小时后

时间:2015-06-17 17:09:50

标签: python mysql django python-3.x pymysql

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

  

OperationalError:(2006," MySQL服务器已经消失(BrokenPipeError(32,' Broken pipe'))")

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

1 个答案:

答案 0 :(得分:2)

我们必须在抛出错误时捕获错误,并调用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()
但是,我没有找到让它自动化的方法,但它完成了这项工作。