2011-08-03 14 views
2

は私のコードです:GAEタスクで自動再試行を実装する方法は?ここ

class PublishPhotosHandler(webapp.RequestHandler): 
    for argument in files_arguments: 
     taskqueue.add(url='/upload', params={'key': key}) 

class UploadWorker(webapp.RequestHandler): 
    def post(self): 
     key = self.request.get('key') 
     result = urlfetch.fetch(...) 
     # how to return there an error, so the task will be retried? 

答えて

6

タスクが(範囲200〜299の外の任意のHTTPステータスコードを返すことによって)実行に失敗した場合、それが成功するまで、App Engineは、タスクを再試行します。デフォルトでは、システムは徐々にリトライ率を低下させて、アプリケーションに過度の要求が氾濫するのを防ぎますが、タスクが成功するまで、1時間に最大1回繰り返すリトライをスケジュールします。したがって、タスクが再びキューに入れられ、再試行されるようになります任意の例外を発生させる、非2XXのステータスコードの原因となります任意の例外を発生させる

+0

ありがとう、クリス。どうすれば例外を発生させることができますか(本当の例外がない場合、urlfetchは503のようなhttpステータスコードを返すか、タイムアウトが発生した場合のみ)? –

+0

http://docs.python.org/tutorial/errors.html#raising-exceptions –

+3

ここで例外を発生させる必要はありません。単に 'self.response.set_status(500)'を実行してください。 –

関連する問題