2011-08-09 8 views
2

프로덕션 환경에서 Google Appengine을 사용하고 있으며 현재 Google 웹 사이트와 콘솔에서 모두 500 개의 오류가 발생하고 있습니다. 우리가 이것들을 막거나 더 우아하게 다루기 위해 할 수있는 일이 있습니까?appengine 및 console에서 500 개의 오류가 발생했습니다.

편집 : 우리는 웹 애플리케이션

+0

어떤 언어를 사용하고 있습니까? 파이썬과 webapp? – moraes

답변

2
  1. 설치 오류 처리기로 파이썬을 사용하고 있습니다 :

  2. 오류가 응용 프로그램에서 발생 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() 
    
  3. 당신이 할 수있는 경우 webapp2 시도해 : 하나의 해결책은 캐치되지 않는 예외를 처리하는 응용 프로그램을 래핑하는 것입니다. 간단한 기능을 handle app-wide exceptions으로 설정할 수 있습니다.

+0

+1 답장을 보내 주셔서 감사합니다. 콘솔 용으로도 작동합니까? –

+0

아니요. 콘솔 오류가 우리 제어에서 벗어났습니다. 두려웠습니다. – moraes

+0

이 미들웨어는 webapp에서 작동하지 않습니다. - webapp는 이미 handle_exception을 호출하고 500을 반환하는 catchall 핸들러를 가지고 있습니다. 기본 핸들러 클래스에서'handle_exception'을 오버 라이딩하거나 더 나은 선택입니다. –

관련 문제