代码之家  ›  专栏  ›  技术社区  ›  speedplane

谷歌应用引擎上的python线程(或其等效线程)解决方案?

  •  2
  • speedplane  · 技术社区  · 14 年前

    我想制作一个谷歌应用引擎应用程序,执行以下操作:

    1. 客户端发出异步HTTP请求
    2. 服务器开始处理该请求
    3. 客户端发出Ajax HTTP请求以获取进度

    问题是服务器处理(步骤2)可能需要30秒以上。

    我知道你不能在谷歌应用引擎上有线程,所有的任务必须在30秒内完成,否则就会被关闭。有办法解决这个问题吗?

    另外,我使用python django作为后端。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Will McCutchen    14 年前

    您将要使用 Task Queue API,可能通过 deferred tasks . 这个 deferred API使处理任务队列变得非常简单。

    本质上,您需要生成一个任务来开始处理。该任务应该 DeadlineExceeded 例外和重新安排自己(再次通过 推迟 api)继续处理。这要求您的任务能够跟踪自己的进度。它们还可以在memcache中更新自己的状态,您可以使用它来编写查看任务状态的视图。然后可以通过Ajax轮询该视图。