0

全部,

有没有办法从处理程序中出错/退出执行?例如,如果传入的请求不包含正确的标头,我们希望发送 400 并退出/关闭连接。但是,每当我们使用self.error(400)self.response.set_status(400)执行任何其他代码之后,无论如何,例如:

class MyPastaHandler(webapp2.Handler):
   def get():
      if not self.request.headers.get('My-Custom-Header'):
         self.error(400)
      ...
      [more code]
      self.response.out.write('{"success": "true"}')

当我提交一个不带上述自定义标头的请求时,我得到一个 400,但我还在响应正文中获得了成功 json,它告诉我self.error(400)不会停止执行,也不会停止执行self.response.set_status(400)

所以,问题是,是否有可能从处理程序中出错?

4

2 回答 2

0

事实证明,有一种简单的方法可以在 400(或任何自定义错误)后退出。return正如 TheFluff 在 AppEngine IRC 频道中所描述的,在 self.error(400) 之后一个简单的老式空就可以了。

于 2012-11-14T13:55:11.920 回答
0

在 webapp2 中 abort() 是引发 HTTP 异常的快捷方式:http ://webapp-improved.appspot.com/guide/exceptions.html#abort

于 2012-11-14T14:35:32.323 回答