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 に答える