2010-02-14 175 views
2

当我从用户那里得到一个GET请求时,我向他们发送响应,然后花费第二次日志记录来处理这个请求。有没有办法在我准备好响应时关闭连接,但是继续执行该日志记录部分,以便用户不必等待它完成?指示GET响应完成w/Python AppEngine

回答

3

Google App Engine docs for the Response object

App Engine的不支持 之前发送 数据到用户的浏览器退出处理器。一些网络服务器 使用这种技术来响应于单个请求将数据“流”到用户的浏览器上的 时间段。 App Engine不支持此 流技术。

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

  1. 你可能不会节省很多时间,而且
  2. 结果可能不太像你” d想要 - 例如,您将从不同的请求中记录日志,因此可能需要从根本上改变日志记录

不过,您可以尝试。

0

你有两个选择:

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