3


2

App Engine urlfetchは、そうすべきではないと思うときに例外を上げています

App Engine APIを使用して最初のPythonアプリケーションを作成しました。Prowlを使用してiPhoneにメッセージを送信するか、メールを送信することにより、サーバーのリストを監視し、サーバーの1つがダウンしたときに通知します。両方。

問題は、週に数回、明らかにダウンしていなくてもサーバーがダウンしていることを通知することです。 google.comやamazon.comのように、事実上常に稼働しているはずのサーバーでテストしましたが、通知も受け取ります。

http://aeservmon.appspot.com/http://aeservmon.appspot.comで実行されているコードのコピーを入手しました。google.comが1月3日に追加されましたが、 6日間まで。

以下は、urlfetchでチェックを行うcheckservers.pyのコードの関連セクションです。DownloadError例外は、サーバーに接続できなかった場合にのみ発生すると想定していましたが、おそらく間違っています。

何が足りないの?

mrsteveman1 / aeservmonの下にあるgithubの完全なソース(新しいユーザーとして1つのリンクしか投稿できません、ごめんなさい!)

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日更新:

今日、ログに例外の1つが見つかりました。

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

1 Answer


2


例外を印刷できますか?

"DownloadError: ApplicationError: 2 something bad"