如何设置全局的DeadlineExceededError处理程序?



我想捕获并处理DeadlineExceededError,这样用户就不会看到App Engine默认抛出的标准"服务器错误"页面。

我知道在你的请求处理程序中重写handle_exception时不会捕获DeadlineExceededErrors(我们已经这样做了)。

我尝试使用自定义error_handlers app.yaml配置,但到目前为止还没有成功,如下所示:

error_handlers:
  - error_code: timeout
    file: timeout.html

…但这似乎也没有捕捉到deadlineexceededererrors,除非我做错了什么。

我知道我可以使用以下模式来捕获特定请求处理程序中的deadlineexceedederror:

class MainPage(webapp.RequestHandler):
    def get(self):
        try:
            # Do stuff...
        except DeadlineExceededError:
            # Many Whelps! Handle it!

…但我想避免将此添加到我的应用程序中的每个请求处理程序。

我如何才能在全球范围内抓住这些难以捉摸的吸盘?

一个可能的解决方案是使用webapp2,它是一个相当整洁的框架,比原来的webapp有很多有用的东西。使用webapp2,您可以在handle_500方法中处理异常,如下所示:

def BaseHandler(webapp2.RequestHandler):
    def handle_500(request, response, exception):
        if isinstance(exception, DeadlineExceededError):
            response.write('Deadline exceeded!')
        else:
            response.write('A server error occurred!')
        logging.exception(exception)
        response.set_status(500)

相关内容

  • 没有找到相关文章

最新更新