Python 应用程序引擎urlfetch正在引发异常,而我认为它不应该引发异常
我已经用appengineapi编写了我的第一个Python应用程序,它旨在监视一个服务器列表,并在其中一个服务器出现故障时通知我,方法是使用Prowl向我的iPhone发送消息,或向我发送电子邮件,或两者兼而有之 问题是,它每周都会通知我几次服务器停机,即使它显然没有停机。我已经用我知道应该一直处于运行状态的服务器(如google.com或amazon.com)进行了测试,但我也收到了通知 我有一个运行在的代码副本,你可以看到google.com是在1月3日添加的,但只列出了6天 下面是checkservers.py中使用urlfetch进行检查的代码的相关部分,我假设只有在无法联系服务器时才会引发DownloadError异常,但也许我错了 我错过了什么 github上mrsteveman1/aeservmon下的完整源代码(我只能作为新用户发布一个链接,对不起!) 1月21日更新: 今天我在日志中发现了一个异常:Python 应用程序引擎urlfetch正在引发异常,而我认为它不应该引发异常,python,google-app-engine,monitoring,Python,Google App Engine,Monitoring,我已经用appengineapi编写了我的第一个Python应用程序,它旨在监视一个服务器列表,并在其中一个服务器出现故障时通知我,方法是使用Prowl向我的iPhone发送消息,或向我发送电子邮件,或两者兼而有之 问题是,它每周都会通知我几次服务器停机,即使它显然没有停机。我已经用我知道应该一直处于运行状态的服务器(如google.com或amazon.com)进行了测试,但我也收到了通知 我有一个运行在的代码副本,你可以看到google.com是在1月3日添加的,但只列出了6天 下面是che
ApplicationError: 5
Traceback (most recent call last):
File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 507, in __call__
handler.get(*groups)
File "/base/data/home/apps/aeservmon/1.339312180538855414/checkservers.py", line 149, in get
self.testserver(server)
File "/base/data/home/apps/aeservmon/1.339312180538855414/checkservers.py", line 106, in testserver
result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=30'} )
File "/base/python_lib/versions/1/google/appengine/api/urlfetch.py", line 241, in fetch
return rpc.get_result()
File "/base/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 501, in get_result
return self.__get_result_hook(self)
File "/base/python_lib/versions/1/google/appengine/api/urlfetch.py", line 331, in _get_fetch_result
raise DownloadError(str(err))
DownloadError: ApplicationError: 5
其他人一直在报告fetch服务的问题(例如) 您是否可以打印例外,它可能包含更多详细信息,例如:
"DownloadError: ApplicationError: 2 something bad"
最近的一次“假阳性”发生在美国东部时间7:04,时间不到一个小时,appengine日志中只有我用logging.info()触发的日志消息。我可以尝试让异常不被处理,但我相信我在几周前就尝试过了,只看到了DownloadError异常消息,没有其他内容。我现在会再试一次,希望今晚会再次触发异常。在我删除异常处理后,用今天发生的异常之一更新了问题。我以前没有见过ApplicationError:5,显然这意味着请求没有在urlfetch的限制内返回?是的,完全正确。。。fetch服务可能偶尔会有延迟(假设目标服务器不是问题所在)。在
fetch()
中,您可以将deadline
参数设置为60秒左右。看起来,截止时间的最大值是10秒,我会尝试一下,但我可能需要考虑执行异步请求,或者为请求使用单独的库,如httplib。谢谢你的帮助!我要把这个答案标对吗?
"DownloadError: ApplicationError: 2 something bad"