python - Flask 应用程序在 60 秒空闲时间后返回 "MySQL server has gone away"

标签 python mysql sqlalchemy flask flask-sqlalchemy

我在应用程序中使用 Flask-SQLAlchemy,闲置 60 秒后,MySQL 返回“MySQL 服务器已消失”错误。

这是我的回溯:

Traceback (most recent call last):
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app response = self.full_dispatch_request()
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request rv = self.handle_user_exception(e)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/flask/app.py", line 1356, in full_dispatch_request rv = self.preprocess_request()
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/flask/app.py", line 1539, in preprocess_request rv = func()
File "./project/controllers/__init__.py", line 18, in set_domain_and_config \ current_site = Site.query.filter(Site.url == host).first_or_404()
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/flask_sqlalchemy.py", line 367, in first_or_404 rv = self.first()
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2181, in first ret = list(self[0:1])
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2048, in __getitem__ return list(res)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2252, in __iter__ return self._execute_and_instances(context)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2267, in _execute_and_instances result = conn.execute(querycontext.statement,\ self._params)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 664, in execute params)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 764, in _execute_clauseelement compiled_sql, distilled_params
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 878, in _execute_context context)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 871, in _execute_context context)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 320, in do_execute cursor.execute(statement, parameters)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/database_dbapi2.py", line 36, in execute return self._nr_cursor.execute(sql, *args, **kwargs)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/MySQLdb/cursors.py", line 201, in execute self.errorhandler(self, exc, value)
File "/var/www/vhosts/example.com/httpdocs/venv/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue
OperationalError: (OperationalError) (2006, 'MySQL server has gone away')

最佳答案

60 秒似乎是一个较低的数字,但您可以设置 SQLALCHEMY_POOL_RECYCLE如果您的服务器更积极地终止空闲连接,则在您的应用程序配置中将时间设置为 <60 秒。

关于python - Flask 应用程序在 60 秒空闲时间后返回 "MySQL server has gone away",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936319/

相关文章:

php - 在 'onexit' 或 'onsubmit 之后,查询 mysql 并填充表单字段,而不离开页面 php js

php - 计算 Cakephp 查询生成器的行数

python - 将 INFO 记录到 Django 服务器的 STDOUT

python - 在独立运行的 python 脚本之间共享 python 对象(例如 Pandas Dataframe)

mysql - 在 mysql 中以逗号分隔值时检查大小写

单元测试中的 SQLAlchemy session 投票

python - 如何在 sqlalchemy 中正确关闭 mysql 连接?

python - MSSQL 中插入时的 SQLAlchemy 回滚

python - 从给定字符串中删除偶数个连续重复字符

python - 为什么 "except"中的未定义名称不会引发 NameError?