ningx、uwsgi、python在启动应用程序一段时间后出现永久性mysql错误

ningx、uwsgi、python在启动应用程序一段时间后出现永久性mysql错误,python,mysql,uwsgi,Python,Mysql,Uwsgi,我将nginx用作前端服务器,将uwsgi用于python应用程序。每天大约有一次我的一个应用程序开始下降。在日志中,我可以看到不同的mysql错误。例如: sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away') 或 还有一些问题是关于无法为列找到行-列…。也许更有趣的是: --- no python application found, check your startu

我将nginx用作前端服务器,将uwsgi用于python应用程序。每天大约有一次我的一个应用程序开始下降。在日志中,我可以看到不同的mysql错误。例如:

sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away')

还有一些问题是关于
无法为列找到行-列…
。也许更有趣的是:

--- no python application found, check your startup logs for errors ---
有什么帮助-我正在终止我的uwsgi进程并再次运行它。有趣的是,其他应用程序(它们也使用mysql)都可以继续工作

如果我杀了福克斯,什么都不会发生。我必须杀死主进程

我的uwsgi配置为:

module = stulyev
callable = app
pp = /home/krasulya/apps/stulyev.net
logto = /var/log/stulyev.net.log
touch-reload = /tmp/stulyev.net.sock
socket = /tmp/stulyev.net.sock
uid = krasulya
gid = www-data
daemonize = /var/log/stulyev.net.daemon.log
reload-on-exception = true
harakiri = 30
max-requests = 10000
harakiri-verbose = 1
buffer-size = 65535

我能做什么?谢谢。

不要在主机中打开数据库连接。并非所有sqlalchemy适配器都支持它。每个工作人员打开一次连接,或将lazy apps=true添加到uWSGI,以便在每个分叉点加载整个应用程序:

谢谢您的回答!这是一个理性的想法,我同意。如何防止主进程连接到数据库?我认为master不应该为任何请求提供服务并将所有请求重定向到Worker。如果你不想使用惰性应用程序,你可以用@postfork(在导入uwsgidecorators后)装饰你的连接函数,这样每当uWSGI调用fork()时,它都会重新执行。你的意思是如果我将使用惰性应用程序吗(乍一看,我并不反对)主进程将无法连接到数据库?您能解释一下我为什么会遇到这个问题吗?为什么问题只在uwsgi服务器启动后8-24小时内发生?您好,我面临着同样的问题。您解决了吗?@postfork是关键所在。如果像我这样运行Flask应用程序,它在--惰性应用程序中运行不好。例如,c的表单验证srf令牌在工作人员中失败。将sqlAlchemy实例创建移动到修饰函数中对我来说很有用!
module = stulyev
callable = app
pp = /home/krasulya/apps/stulyev.net
logto = /var/log/stulyev.net.log
touch-reload = /tmp/stulyev.net.sock
socket = /tmp/stulyev.net.sock
uid = krasulya
gid = www-data
daemonize = /var/log/stulyev.net.daemon.log
reload-on-exception = true
harakiri = 30
max-requests = 10000
harakiri-verbose = 1
buffer-size = 65535