这个问题是我的确切问题
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: 如果有人在不干扰核心设置的情况下解决了这个问题,那么任何其他解决方法都可以做到!
答案 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_packet。您可以增加它以查看是否存在问题。