タスクキューを介して処理される push タスクは、さまざまな理由で失敗することがあります。ハンドラがタスクの実行に失敗した場合(200~299 以外の HTTP ステータス コードが返された場合)、App Engine は成功するまでタスクを再試行します。
デフォルトでは、アプリケーションが大量のリクエストで過負荷状態になるのを避けるため、再試行速度が徐々に低下し、タスクが成功するまで 1 時間に最大 1 回繰り返すスケジュールに設定されます。
タスクの再試行
再試行パラメータ要素を
に追加することにより、タスク再試行の独自のスキームをカスタマイズできます。この設定では、特定のキューでの失敗したタスクの最大再試行回数を指定できます。再試行の制限時間を設定したり、再試行の間隔を制御したりすることもできます。queue.xml
次の例に、さまざまな再試行のシナリオを示します。
fooqueue
では、タスクは最初の試行から 2 日間を期限とし、7 回を上限として再試行されます。両方の上限に達すると、タスクは完全に失敗し、再試行されなくなります。barqueue
では、App Engine は、再試行の回数に応じて間隔を長くしながらタスクを再試行し、最大バックオフに達すると、最大間隔で無限に再試行します(リクエストの間隔は 10 秒、20 秒、30 秒、...、190 秒、200 秒、200 秒、... となります)。bazqueue
では、再試行間隔は 10 秒から開始し、3 回 2 倍ずつ間隔を長くします。その後は直線的に間隔が広げられます。最終的には、最大間隔で無限に再試行します(リクエストの間隔は 10 秒、20 秒、40 秒、80 秒、160 秒、240 秒、300 秒、300 秒、... となります)。
<?xml version="1.0" encoding="utf-8"?>
<queue-entries>
<queue>
<name>fooqueue</name>
<rate>1/s</rate>
<retry-parameters>
<task-retry-limit>7</task-retry-limit>
<task-age-limit>2d</task-age-limit>
</retry-parameters>
</queue>
<queue>
<name>barqueue</name>
<rate>1/s</rate>
<retry-parameters>
<min-backoff-seconds>10</min-backoff-seconds>
<max-backoff-seconds>200</max-backoff-seconds>
<max-doublings>0</max-doublings>
</retry-parameters>
</queue>
<queue>
<name>bazqueue</name>
<rate>1/s</rate>
<retry-parameters>
<min-backoff-seconds>10</min-backoff-seconds>
<max-backoff-seconds>300</max-backoff-seconds>
<max-doublings>3</max-doublings>
</retry-parameters>
</queue>
</queue-entries>
次のステップ
- タスクキューのパラメータについて学習する。