Google Application Engine上的Python线程(或其等价物)解决方法?

时间:2010-10-12 17:34:44

标签: python django multithreading google-app-engine python-multithreading

我想创建一个执行以下操作的Google App Engine应用程序:

  1. 客户端发出异步http请求
  2. 服务器开始处理该请求
  3. 客户端制作ajax http请求以取得进展
  4. 问题是服务器处理(步骤#2)可能需要30秒以上。

    我知道您无法在Google Application Engine上拥有线程,并且所有任务必须在30秒内完成或关闭。有办法解决这个问题吗?

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

1 个答案:

答案 0 :(得分:4)

您可能希望使用Task Queue API,可能是deferred tasksdeferred API使得使用任务队列变得非常简单。

基本上,您需要生成一个任务来开始处理。该任务应该捕获DeadlineExceeded个异常并重新安排自己(再次通过deferred API)继续处理。这要求您的任务能够跟踪自己的进度。他们还可以在memcache中更新自己的状态,您可以使用它来编写检查任务状态的视图。然后可以通过Ajax轮询该视图。