在appengine和console上有500个错误

时间:2011-08-09 10:13:39

标签: python google-app-engine

我在生产环境中使用Google Appengine,目前我们的网站和控制台上都有500个错误。有什么我们可以做的来防止这些或更优雅地处理它们?

编辑:我们在Webapp上使用python

1 个答案:

答案 0 :(得分:2)

  1. 设置错误处理程序:http://code.google.com/appengine/docs/python/config/appconfig.html#Custom_Error_Responses

  2. 当应用程序中发生错误时,错误处理程序无法提供帮助。一种解决方案是将应用程序包装起来处理未捕获的异常:

    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