2015-09-07 83 views
1

這個問題是我的確切問題解決方法(2006,'MySQL服務器已經消失')?

Django - OperationalError: (2006, 'MySQL server has gone away')

的aparent工作圍繞這一否則未解決的問題是增加wait_timeout爲執行

背景

我有芹菜每天在特定時間運行一次的任務。最初它工作正常,但上週我已經開始越來越:

Exception_ocoured_:(2013,「期間 查詢到MySQL服務器失去連接」)

這芹菜任務簡單地獲取從一些細節db,最多4000行,併發送給最終用戶。

問:

有什麼辦法來增加此超時只針對特定的芹菜任務這是面臨這個問題在Django的環境,因爲我不想打擾本地設置?

我在尋找一個django ish解決方案,只要執行這個芹菜任務,它的生命週期就會一直存在。

對於如:

@task 
def doSomething(): 
    try: 
     set_timeout_for_mysql = 20000 # <== main agenda for this question 
     # OR 
     ping_resp = somehow_test_mysql_con() 
     while(ping_resp == False): 
      keep trying to connect or create new connection 
     # do_operations 
    except Exception, e: 
     # log exception 

規格:

In [18]: django.VERSION 
Out[18]: (1, 7, 7, 'final', 0) 

django-celery==3.0.21 

PS: 其他任何解決辦法都行,如果有人已經解決了這個機智豪特擾亂核心設置!

回答

1
from django.db import close_old_connections 

... 
close_old_connections() 
... # do some db jobs, it will reconnect db 

好運

+0

是啊...我遲到了,我知道了! :) – NoobEditor

0

您可以設置每個會話(連接)WAIT_TIMEOUT

set wait_timeout=10000; 
SHOW VARIABLES LIKE 'wait_timeout'; 

但是,你確定錯誤是從WAIT_TIMEOUT。另一個解決方案是max_allowed_pa​​cket。你可以增加它看看這個問題。

+0

'max_allowed_pa​​cket'這'設置wait_timeout',不知道如果我能我直接在我的芹菜提到這一點'def'還是需要一個單獨的實施? – NoobEditor

相關問題