我用appengineapi编写了我的第一个Python应用程序,它的目的是监视一个服务器列表,并在其中一个服务器出现故障时通知我,方法是使用Prowl向我的iPhone发送消息,或者向我发送电子邮件,或者两者兼而有之。在
问题是,它每周会有几次通知我一个服务器坏了,即使很明显不是这样的。我已经用我知道应该一直在运行的服务器进行了测试谷歌或者亚马逊网站但我也收到通知。在
我有一个运行在http://aeservmon.appspot.com的代码副本,你可以看到谷歌已于1月3日添加,但仅列为6天。在
以下是代码的相关部分checkservers.py这样做了与urlphetch的检查,我假设只有在无法联系到服务器时才会引发DownloadError异常,但可能我错了。在
我错过了什么?在
github上mrstevenman1/aeservmon下的完整源代码(我只能作为新用户发布一个链接,抱歉!)在
def testserver(self,server):
if server.ssl:
prefix = "https://"
else:
prefix = "http://"
try:
url = prefix + "%s" % server.serverdomain
result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=30'} )
except DownloadError:
logging.info('%s could not be reached' % server.serverdomain)
self.serverisdown(server,000)
return
if result.status_code == 500:
logging.info('%s returned 500' % server.serverdomain)
self.serverisdown(server,result.status_code)
else:
logging.info('%s is up, status code %s' % (server.serverdomain,result.status_code))
self.serverisup(server,result.status_code)
1月21日更新:
今天我在日志中发现了一个例外:
^{pr2}$
其他人一直在报告fetch服务的问题(例如http://code.google.com/p/googleappengine/issues/detail?id=1902&q=urlfetch&colspec=ID%20Type%20Status%20Priority%20Stars%20Owner%20Summary%20Log%20Component)
您能否打印例外情况,它可能有更详细的信息,例如:
相关问题 更多 >
编程相关推荐