【发布时间】:2015-12-02 22:07:21
【问题描述】:
这个问题是我的确切问题
Django - OperationalError: (2006, 'MySQL server has gone away')
对这个原本未解决的问题的明显解决方法是增加wait_timeout 以执行
背景
我有一个 celery 任务,每天在特定时间运行一次。最初它工作正常,但从上周开始我开始得到:
Exception_ocoured_: (2013, 'Lost connection to MySQL server during during 查询')
这个 celery 任务只是从 db 中获取一些详细信息,最多 4000 行并将邮件发送给最终用户。
问题:
有什么方法可以增加这个超时时间只针对在 django 环境中面临这个问题的特定 celery 任务,因为我不想干扰本机设置?
我正在寻找一个 djangoish 解决方案,其生命周期仅与此 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: 如果有人在不影响核心设置的情况下解决了这个问题,任何其他解决方法都可以解决!!!
【问题讨论】: