私は現場でGoogle Appengineを使用しています。現在、私たちのウェブサイトとコンソールの両方で500のエラーが発生しています。これらを防止するために、またはより優雅にそれらを扱うためにできることはありますか?appengineとコンソールで500エラー
EDIT:私たちは、のWebapp
私は現場でGoogle Appengineを使用しています。現在、私たちのウェブサイトとコンソールの両方で500のエラーが発生しています。これらを防止するために、またはより優雅にそれらを扱うためにできることはありますか?appengineとコンソールで500エラー
EDIT:私たちは、のWebapp
セットアップエラーハンドラでのpythonを使用している:http://code.google.com/appengine/docs/python/config/appconfig.html#Custom_Error_Responses
エラーがアプリで発生した場合、エラーハンドラが助けることができません。あなたができる場合は、
import logging
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
def error_handler_middleware(app):
"""Wraps the application to catch uncaught exceptions."""
def wsgi_app(environ, start_response):
try:
return app(environ, start_response)
except Exception, e:
logging.exception(e)
# ... display a custom error message ...
response = webapp.Response()
response.set_status(500)
response.out.write('Ooops! An error occurred...')
response.wsgi_write(start_response)
return ['']
return wsgi_app
app = webapp.WSGIApplication([...])
app = error_handler_middleware(app)
def main():
util.run_wsgi_app(app)
if __name__ == '__main__':
main()
webapp2を試してみる:一つの解決策は、キャッチされない例外を処理するアプリケーションをラップすることです。単純な関数をhandle app-wide exceptionsに設定することができます。
+1あなたの答えmoraesに感謝します。このようなことはコンソールにも同様に働くでしょうか? –
いいえ、コンソールのエラーが私のコントロールから外されました。私は恐れています。 – moraes
このミドルウェアはwebappでは動作しません - webappは既に 'handle_exception'を呼び出して500を返すcatchallハンドラを持っています。ハンドラクラスの' handle_exception'を上書きするか、より良い選択肢です。 –
あなたはどの言語を使用していますか? WebアプリケーションでPython? – moraes