2015-06-17 32 views
0

我的Django 1.6應用程序(Python3)中有一個模塊,它像守護進程一樣運行,但運行幾個小時後會拋出此錯誤:Django + PyMySQL在幾個小時後拋出「MySQL服務器已經消失」

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

似乎在MySQL連接中存在一個標誌,autoreconnect叫做MYSQL_OPT_RECONNECT,我應該設置它嗎?哪裏?我正在使用PyMySQL連接器(通過在主要__init__.py中運行pymysql.install_as_MySQLdb())。

回答

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() 

雖然我沒有找到使它自動化的方法,但它完成了這項工作。