I use現在実行中のタスクの数を保持するカウンタ。タスクが正常に完了したら、私はそれを減らす:すべての再試行が失敗した場合にタスクカウンタを減らす方法はありますか?
for argument in files_arguments:
taskqueue.add(url='/tasks/upload', params={'photo_key': str(photo_file.key()),
'counter_key': counter_key})
# count number of active tasks
db.run_in_transaction(increase_counter, counter_key)
# task handler
class UploadWorker(webapp.RequestHandler):
def post(self):
try:
result = urlfetch.fetch(...)
except DownloadError:
logging.error('(TASK) ... DownloadError during file upload')
pass
except DeadlineExceededError:
logging.error('(TASK) ... DeadlineExceededError during file upload')
pass
if result.status_code == 200:
# decrease counter of active tasks
db.run_in_transaction(decrease_counter, counter_key)
else:
self.response.set_status(500)
をしかし、どのように、私は最後の試みは、タスクカウンタを減少させるために失敗したことを知ることができますか?
splix、私は最大3回実行するタスクを定義したとしましょう。それは3回実行され、3回失敗しました。しかし、それ以上の試行はないので、カウンターを減らす必要があります。私は他のいくつかの例外をキャッチしてそれを行う必要がありますか?それではどの例外? (ファイルが何度もアップロードされても問題ありません) –
まず、再試行の方法を設定できます( 'TaskRetryOptions'参照)。そして、2番目に、いくつかの時間の後に実行されるいくつかのクリーンアップタスクをスケジューリングし、処理されたかどうかチェックします( 'Task.eta'参照)。 –