相关疑难解决方法(0)

是否有一种pythonic方式尝试最多次?

我有一个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子句中再次尝试来做到这一点,但这非常难看,我觉得必须有一个体面的方法来实现这一点.

python exception-handling

77
推荐指数
6
解决办法
4万
查看次数

处理urllib2的超时? - Python

我在urllib2的urlopen中使用了timeout参数.

urllib2.urlopen('http://www.example.org', timeout=1)
Run Code Online (Sandbox Code Playgroud)

如何告诉Python如果超时到期,应该引发自定义错误?


有任何想法吗?

python timeout urllib urllib2

62
推荐指数
2
解决办法
11万
查看次数

标签 统计

python ×2

exception-handling ×1

timeout ×1

urllib ×1

urllib2 ×1