kam*_*ens 8 error-handling google-app-engine requesthandler
我想捕获并处理DeadlineExceededError,因此用户看不到App Engine默认抛出的标准"服务器错误"页面.
我知道在请求处理程序中重写handle_exception时,不会捕获 DeadlineExceededErrors (我们已经这样做了).
到目前为止,我已尝试使用自定义error_handlers app.yaml配置,但未成功:
error_handlers:
- error_code: timeout
file: timeout.html
Run Code Online (Sandbox Code Playgroud)
...但是,除非我做错了,否则它似乎也没有捕获DeadlineExceededErrors.
我知道我可以使用以下模式来捕获特定请求处理程序中的DeadlineExceededErrors:
class MainPage(webapp.RequestHandler):
def get(self):
try:
# Do stuff...
except DeadlineExceededError:
# Many Whelps! Handle it!
Run Code Online (Sandbox Code Playgroud)
...但我想避免将其添加到我的应用程序中的每个请求处理程序.
我怎样才能在全球范围内捕获这些难以捉摸的吸盘?
一种可能的解决方案是使用 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |