use*_*548 6 mysql tornado python-3.x pymysql
使用pymysql连接到mysql,让程序运行很长时间,例如,晚上离开办公室并在第二天早上回来.在此期间,对此应用程序没有任何操作.现在进行数据库提交会产生此错误.
File "/usr/local/lib/python3.3/site-packages/pymysql/cursors.py", line 117, in execute
self.errorhandler(self, exc, value)
File "/usr/local/lib/python3.3/site-packages/pymysql/connections.py", line 189, in defaulterrorhandler
raise errorclass(errorvalue)
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
Run Code Online (Sandbox Code Playgroud)
重新启动网络服务器(龙卷风),没关系.为什么如果长时间离开会得到这个错误?
wait_timeout 的存在是有原因的:长时间的空闲连接浪费了有限的服务器资源。你是对的:增加它不是正确的方法。
幸运的是,这是具有强大异常机制的 Python。我不熟悉,pymysql但大概你有一个“open_connection”方法允许
try:
cursor.do_something()
except pymysql.err.OperationalError as e:
if e[0] == 2013: # Lost connection to server
# redo open_connection and do_something
else:
raise
Run Code Online (Sandbox Code Playgroud)
由于您没有发布任何调用代码,因此我无法构建此示例以匹配您的应用程序。关于该except条款有一些值得注意的事情:首先,它们应该始终尽可能地窄,在这种情况下,(大概)有很多 OperationalErrors,您只知道如何处理“丢失连接”。
如果它不是丢失的连接异常,您应该重新提出它,以免它被吞没。除非您知道如何处理其他 OperationalErrors,否则这将向上传递堆栈并导致信息错误消息,这是一个合理的做法,因为到那时您的光标可能已经无用了。
重新启动 Web 服务器只会将丢失的连接修复为重新初始化所有内容的意外副作用;在代码中处理异常是实现目标的更温和的方式。
| 归档时间: |
|
| 查看次数: |
4244 次 |
| 最近记录: |