1

我可以看到我的任务正在运行,但我在 self.response.out.write() 的页面上看不到任何内容

我这样做:

class CounterWorker(webapp.RequestHandler):
  def post(self): # should run at most 1/s
    self.response.out.write("<a href='/'>start over</a><br /><br />")

class MainHandler(webapp.RequestHandler):
  def post(self, mode=""):
      taskqueue.add(url='/worker', countdown=10)
4

1 回答 1

3

不,我不明白你为什么会期待任何输出。

任务是一个单独的过程。任务的全部意义在于它完全独立于与用户交互的代码运行。它用于执行不需要用户输出的长时间运行的计算。

因此,您的面向用户的代码 - 需要在 30 秒内完成 - 接受来自用户的任何参数,触发任务,然后立即响应用户(例如,“处理触发”)。然后你的任务就会开始并完成它的工作。该任务无法直接与用户通信,因为原始请求已完成

如果您愿意,您可以让您的任务在某处(在数据存储实体或 memcache 中)设置一个标志来确定处理的当前状态,然后您可以编写一些 Ajax 来调用访问该标志并告诉用户的处理程序如果它完成了。但是您根本无法直接写入任务中的输出。

于 2012-11-26T10:28:28.940 回答