App Engine - счетчик повторений в очереди задач с помощью Mapper API - PullRequest
1 голос
/ 27 июля 2010

вот что я пытаюсь сделать: Я настроил задание MapReduce с новым API Mapper. Это в основном работает нормально. Проблема в том, что Очередь задач повторяет все задачи, которые не удалось. Но на самом деле я не хочу, чтобы он это делал. Есть ли способ удалить задачу из очереди или сказать, что она была успешно выполнена? Возможно, передав код 200 статуса?

Я знаю, что могу получить X-Appengine-Taskretrycount, но это не очень помогает, так как я не знаю, как остановить задачу. Я попытался использовать 'pass' в try ... кроме блока, но это тоже не сработало.

Любая помощь будет высоко ценится:)

Спасибо, Chris

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

На момент изменения http://code.google.com/p/appengine-mapreduce/source/detail?r=114 контекстный объект имеет атрибут task_retry_count.

1 голос
/ 29 декабря 2010

В вашем обработчике задач сделайте это


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

Надеюсь, это поможет !!

...