解决方案(2006年,'MySQL服务器已经消失')?

时间:2015-09-07 11:07:41

标签: mysql django exception

这个问题是我的确切问题

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

对这个尚未解决的问题的一个明显的解决方法是增加执行的wait_timeout

背景

我有芹菜任务,每天在特定时间运行一次。最初它工作正常但从上周开始我已经开始:

  

Exception_ocoured_ :( 2013年,'在MySQL期间失去了与MySQL服务器的连接)   查询')

这个celery任务只是从db中获取一些细节,最多4000行,并向最终用户发送邮件。

问题:

是否有任何方法可以增加此超时仅针对django环境中面临此问题的特定芹菜任务,因为我不想打扰原生设置?

我正在寻找一个 django ish解决方案,其生命周期仅与此celery任务执行一样长。

例如:

@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: 如果有人在不干扰核心设置的情况下解决了这个问题,那么任何其他解决方法都可以做到!

2 个答案:

答案 0 :(得分:3)

Auth::attempt($request->only(['$email', '$password']))

祝你好运

答案 1 :(得分:0)

您可以为每个会话(连接)设置wait_timeout

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

但是,你确定错误来自wait_timeout。另一个解决方案是max_allowed_pa​​cket。您可以增加它以查看是否存在问题。