我有一个python脚本,它在共享的linux主机上查询MySQL服务器.出于某种原因,对MySQL的查询通常会返回"服务器已经消失"错误:
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
Run Code Online (Sandbox Code Playgroud)
如果您之后立即再次尝试查询,它通常会成功.所以,我想知道在python中是否有一种合理的方法来尝试执行查询,如果它失败了,再试一次,最多可以尝试一定数量的尝试.可能我希望它在放弃之前尝试5次.
这是我的代码类型:
conn = MySQLdb.connect(host, user, password, database)
cursor = conn.cursor()
try:
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
# do something with the data
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % (e.args[0], e.args[1])
Run Code Online (Sandbox Code Playgroud)
显然,我可以通过在except子句中再次尝试来做到这一点,但这非常难看,我觉得必须有一个体面的方法来实现这一点.
我在urllib2的urlopen中使用了timeout参数.
urllib2.urlopen('http://www.example.org', timeout=1)
Run Code Online (Sandbox Code Playgroud)
如何告诉Python如果超时到期,应该引发自定义错误?
有任何想法吗?