App Engine中超时异常的名称是什么?

时间:2009-05-29 01:01:59

标签: google-app-engine exception

出于某种原因,我的印象是它只是被称为超时,但它似乎不是。

谢谢!

2 个答案:

答案 0 :(得分:7)

对于数据存储区调用,例外是google.appengine.ext.db.Timeout。如果超过总(挂钟)持续时间,则例外是google.appengine.runtime.DeadlineExceededError。 DeadlineExceeded错误被抛出“软”一次,此时你有一个很短的时间来返回一个响应并退出;如果你不这样做,它会再次抛出,无法捕获,你的脚本会被毫不客气地终止。

答案 1 :(得分:3)

超时异常处理在文档的Request Timer部分进行了解释:

  

请求处理程序生成并返回对请求的响应的时间有限,通常约为30秒。一旦达到截止日期,请求处理程序就会中断。

     

Python运行时环境通过从包DeadlineExceededError引发google.appengine.runtime来中断请求处理程序。如果请求处理程序没有捕获此异常,就像所有未捕获的异常一样,运行时环境将向客户端返回HTTP 500服务器错误。

     

请求处理程序可以捕获此错误以自定义响应。在引发异常以准备自定义响应之后,运行时环境为请求处理程序提供了更多的时间(少于一秒)。

from google.appengine.runtime import DeadlineExceededError

class MainPage(webapp.RequestHandler):
  def get(self):
    try:
      # Do stuff...

    except DeadlineExceededError:
      self.response.clear()
      self.response.set_status(500)
      self.response.out.write("This operation could not be completed in time...")     
     

如果处理程序在第二个截止日期之前未返回响应或引发异常,则处理程序将终止并返回默认错误响应。

     

虽然请求可能需要30秒才能响应,但App Engine针对具有短期请求的应用程序进行了优化,通常是需要几百毫秒的应用程序。高效的应用程序可以快速响应大多数请求。 App Engine的基础架构无法很好地扩展应用程序。

DataStore有自己的TimeOut exception

  

google.appengine.ext.db包提供以下异常类:

     

[...]

     

exception Timeout()
  数据存储区操作超过数据存储区操作允许的最长时间时触发。