嘿
我正在编写一个访问soap资源的脚本(http://chemspell.nlm.nih.gov/axis/SpellAid.jws?wsdl),它有时会给出503 http状态(在进行了1000次查询之后…)
在肥皂水客户然后,模块崩溃,并出现一个非特定的异常,try except语句可以捕捉到该异常,但我无法测试该异常的实际503 http状态。在
所以现在捕捉这个问题的代码如下:
for i in range(9):
try:
result = client.service.getSugList(query, 'All databases')
success = True
break
except urllib2.URLError, e:
pass
except Exception, e:
if e[0] == 503:
print "e[0] == 503"
if 503 in e:
print "503 in e"
if e is (503, u'Service Temporarily Unavailable'):
print "e is (503, u'Service Temporarily Unavailable')"
if e == (503, u'Service Temporarily Unavailable'):
print "e == (503, u'Service Temporarily Unavailable')"
raise ChemSpellException, \
"Uncaught exception raised by suds.client: %s" % e
if success is False:
raise ChemSpellException, \
"Got too many timeouts or 503 errors from ChemSpell web service."
结果如下:
^{pr2}$所以我的if子句中没有一个能够检测到异常,我也不知道下一步要做什么来具体地捕捉它。很难提供一个经常失败的最小示例,因为它依赖于服务器端,并且当脚本连续运行时,这个异常每天都会弹出一次。我能提供更多的信息吗?你知道要测试哪个if子句吗?在
干杯, 帕斯卡
源代码
suds/client.py
它们只是用参数元组(状态代码和原因)在下面的行中引发
Exception
你可以抓住503
我刚刚发现了可订阅的例外情况,谢谢。在
^{pr2}$似乎您混淆了相等运算符(“==”)的标识运算符(“is”)
异常是异常,而不是元组
如果没有这行代码,您将看到一条带有异常类型和完整回溯的错误消息。在
相关问题 更多 >
编程相关推荐