【发布时间】:2016-05-01 19:20:28
【问题描述】:
我使用带有本地 MySQL 数据库的 CherryPy 网络服务器 (Python 2.7)。 简而言之,几天后,我在执行新的 SQL 查询时收到以下错误:
MySQL server has gone away
虽然我可以找到这个问题的一些来源,但它们实际上与 CherryPy 无关。重新启动 CherryPy 可以解决问题。我猜,CherryPy 断开连接,无法重新连接?
因此,我的问题是:
- 我如何检查数据库连接,如果它不活跃,重新连接? 或
- 简单地说,如何避免上面提到的错误?。
在下面,我展示了我正在使用的一些简化代码版本:
def dbconnect(thread_index):
"""
Creates a database connection for each thread that CherryPy creates
:param thread_index:
"""
cherrypy.thread_data.db = MySQLdb.connect("localhost", "user",
"password", "databasename")
class website(object):
@cherrypy.expose
def index(self):
c = cherrypy.thread_data.db.cursor()
c.execute("Select * from ATable")
(output,) = c.fetchone()
# generate some html output ...
cherrypy.engine.subscribe('start_thread', dbconnect)
website = website()
cherrypy.quickstart(website)
现在如果我在服务器上没有任何事情发生的几天后访问索引页面,索引方法会抛出 MySQL 服务器已消失 错误。
希望对于所有使用 CherryPy 并在某一天遇到 SQL 错误的人来说,这个问题可能会很有趣。 非常感谢:-)
【问题讨论】: