1

これが私がやろうとしていることです: 新しい Mapper API で MapReduce ジョブをセットアップしました。これは基本的にうまくいきます。問題は、タスク キューが失敗したすべてのタスクを再試行することです。しかし、実際には、彼にそうしてほしくありません。キューからタスクを削除する方法や、タスクが正常に完了したことを伝える方法はありますか? おそらく 200 ステータス コードを渡しますか?

X-Appengine-Taskretrycount を取得できることはわかっていますが、タスクを停止する方法がわからないため、あまり役に立ちません。try .. except ブロックで「パス」を使用しようとしましたが、それも機能しませんでした。

どんな助けでも大歓迎です:)

ありがとう、クリス

4

2 に答える 2

2

http://code.google.com/p/appengine-mapreduce/source/detail?r=114変更の時点で、コンテキスト オブジェクトには task_retry_count 属性があります。

于 2010-09-29T18:06:03.787 に答える
1

タスクハンドラーでこれを行います


class yourTaskWorker(webapp.RequestHandler):
    def post(self):
        logging.info('yourTaskWorker (post)...')        
        if int(self.request.headers['X-Appengine-Taskretrycount']) == 0:
            logging.info('running task...')
            # call whatever functions you want here
        else:
            logging.info('this task failed before, not going to retry.')
            # obviously call nothing here, the task will "pass" without error and go away

お役に立てれば!!

于 2010-12-28T22:12:33.503 に答える