使用/ Python App Engine指示GET响应已完成

时间:2010-02-14 14:55:21

标签: python google-app-engine

当我收到用户的GET请求时,我会向他们发送响应,然后花一些关于该请求的日志记录。有没有办法在准备好响应时关闭连接,但继续执行该日志记录部分,以便用户不必等待它完成?

2 个答案:

答案 0 :(得分:3)

来自Google App Engine docs for the Response object

  

App Engine 不支持发送   数据到用户的浏览器之前   退出处理程序。一些Web服务器   使用此技术将数据“流”到   一段时间内用户的浏览器   响应单个请求的时间。   App Engine不支持此功能   流技术。

所以没有简单的方法。如果您有一组数据可以传递给更长时间运行的“进程和日志”方法,请尝试使用deferred library。请注意,这将需要捆绑您的数据并将其发送到任务队列以进行处理和记录,因此

  1. 你可能不会节省太多时间,
  2. 结果可能看起来不像你想要的那样 - 例如,你要从不同的请求中记录,所以可能需要从根本上改变记录
  3. 不过,你可以试试。

答案 1 :(得分:0)

您有两种选择:

  1. 使用Task Queue API。只要数据少于10k(这是任务队列有效负载的限制),任务排队的速度应该很快。
  2. 使用this video中Rafe描述的'偷偷摸摸'技巧在响应完成后进行处理。