500 errors on appengine and console
I'm using Google Appengine in a production environment and we are currently getting 500 errors on both our website and console. Is there anything we 开发者_JS百科can do to prevent these or handle them more gracefully?
EDIT: We're using python with Webapp
Setup error handlers: http://code.google.com/appengine/docs/python/config/appconfig.html#Custom_Error_Responses
When the error occurs in the app, error handlers can't help. One solution is to wrap the application to handle uncaught exceptions:
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()
If you can, give webapp2 a try. You can set simple functions to handle app-wide exceptions.
精彩评论