queue.yaml リファレンス

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r が App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

詳しくは、リージョン ID をご覧ください。

App Engine SDK を使用してタスクキューを管理するアプリケーションでは、queue.yaml という構成ファイルを使用してこれらのキューを定義します。queue.yaml を使用して push キューを構成できます。push キューの場合、デフォルトのキューがあるので、この構成ファイルは省略できます。

名前付きのキューを定義し、デフォルトの処理速度をオーバーライドする基本的な例を次に示します。

queue:
- name: my-push-queue
  rate: 1/s

タスクの試行回数を設定し、デフォルトの処理レートを変更する queue.yaml 構成の複雑な例を以下に示します。

queue:
- name: fooqueue
  rate: 1/s
  retry_parameters:
    task_retry_limit: 7
    task_age_limit: 2d
- name: barqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 0
- name: bazqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 3

構文

queue.yaml ファイルは、ルート ディレクティブが queue である YAML ファイルです。このディレクティブには、0 個以上の名前付きキューが含まれています。各キューの定義では以下の要素を指定できます。

要素 説明
bucket_size(push キュー)

省略可。タスクキューでは、トークン バケット アルゴリズムを使用して、タスクの実行レートが制御されます。名前付きの各キューには、bucket_size 値で指定されている最大個数以内のトークンを保持するトークン バケットがあります。アプリケーションで 1 つのタスクが実行されるごとに、バケットからトークンが 1 つ削除されます。 キューのバケットにトークンがなくなるまで、そのキュー内のタスクの処理を続けます。キューに対してユーザーが指定したレートに基づいて、App Engine はバケットに新しいトークンを補充し続けます。

キューに数多くのタスクがあり、レートが高い場合は、バケットサイズによってキューの処理レートが制限されます。バケットサイズの最大値は 500 です。これにより、タスクがキューに投入されるとすぐに処理が開始されるようにレートを高くすると同時に、数多くのタスクが短時間にキューに投入された場合のリソース使用量を制限できます。

キューの bucket_size を指定していない場合、デフォルト値は 5 です。多くの場合、デフォルトのサイズでは小さすぎるため、より大きい値を設定することをおすすめします。推奨サイズは処理レートを 5 で割った値(レート ÷ 5)です。

この要素の詳細については、max_burst_size の比較説明をご覧ください。

これは、Cloud Tasks API リファレンスにあります。
max_concurrent_requests(push キュー)

省略可。指定されたキューから同時に実行できるタスクの最大数を設定します。この値は整数です。デフォルトでは、キューごとに実行できるタスクが 1,000 個までです。推奨される上限は、キューごとに実行できるタスクが 5,000 個までです。キューは、最初に作成されたときや、しばらくアイドル状態だったときは、ゆっくりと増加することに注意してください。

現在のタスクの数を制限すると、キューの実行レートをより詳細に制御して、同時に実行されるタスクの数が多くなりすぎないようにすることができます。また、Datastore での競合を防止し、他のキューやオンライン処理でリソースを使用できるようになります。

この要素の詳細については、Cloud Tasks API リファレンスにある max_concurrent_dispatches の比較説明をご覧ください。

name

必須。キューの名前です。

キュー名には大文字、小文字、数字、ハイフンを使用できます。キュー名の最大長は 100 文字です。

どのアプリにも default という名の push キューがあります。このキューには、1 秒あたり 5 タスクというレートがあらかじめ設定されていますが、queue.yaml でデフォルト キューを定義すると、このレートを変更できます。queue.yaml でデフォルト キューを構成していない場合、デフォルト キューは初回使用時まで Google Cloud Console に表示されません。default という名前のキューを定義することにより、このキューの設定をカスタマイズできます。

rate(push キュー)

必須。このキューでタスクを処理する頻度です。値は数値の後にスラッシュと時間の単位を付けたものです。単位は、s が秒、m が分、h が時間、d が日を表します。たとえば 5/m という値は、タスクが 1 分あたり 5 回のレートで処理されることを示します。rate の最大値は 500/s です。

数値が 00/s など)の場合、キューは「一時停止」となり、タスクの処理は行われません。

この要素の詳細については、Cloud Tasks API リファレンスにある max_dispatches_per_second の比較説明をご覧ください。

retry_parameters

省略可。push キューで失敗したタスクの再試行回数を構成します。この要素を追加して、特定のキューで失敗するタスクの最大再試行回数を指定できます。再試行の制限時間を設定したり、再試行の間隔を制御したりすることもできます。

再試行パラメータに次のサブ要素を含めることができます。

task_retry_limit
再試行回数。たとえば、0 を指定した場合、タスクが失敗しても、タスクの再試行は行われません1 を指定した場合、タスクが失敗すると、タスクの再試行が 1 回だけ行われます。このパラメータが指定されていない場合、タスクは無期限に再試行されます。task_age_limit とともに task_retry_limit を指定すると、両方の制限に達するまで、タスクが再試行されます。
task_age_limit(push キュー)
失敗したタスクを再試行する制限時間。タスクを最初に実行した時点から計測されます。値は数値の後に時間の単位を付けたものです。単位は、s が秒、m が分、h が時間、d が日を表します。たとえば、5d という値は、タスクの実行を最初に試みてから 5 日間という制限を指定します。このパラメータが指定されていない場合、タスクは無期限に再試行されます。task_retry_limit とともに指定すると、App Engine は両方の上限に達するまでタスクを再試行します。
min_backoff_seconds(push キュー)
タスクが失敗してから再試行するまでの最小待機時間(秒数)。デフォルト値は 0.1 です。
max_backoff_seconds(push キュー)
タスクが失敗してから再試行するまでの最大待機時間(秒数)。デフォルト値は 3600 です。
max_doublings(push キュー)
失敗したタスクの再試行間隔が一定になるまでの、間隔が倍増する最大回数。定数は 2**max_doublings * min_backoff_seconds です。デフォルト値は 16 です。
target(push キュー)

省略可。サービス / バージョン、フロントエンド バージョン、またはバックエンドの名前となる文字列です。このキューに追加されたすべてのタスクを実行するための名前です。デフォルト値は空の文字列です。

タスクの HTTP リクエストを構築するときは、アプリのドメイン名の前に文字列を付加します。たとえば、アプリ ID が my-app で、ターゲットを my-version-dot-my-service に設定すると、URL のホスト名が my-version-dot-my-service-dot-my-app.REGION_ID.r.appspot.com に設定されます。

ターゲットを指定しない場合は、タスクをキューに登録したのと同じバージョンのアプリケーションで呼び出されます。つまり、キューのターゲットを指定せずに、デフォルトのアプリケーション バージョンからタスクをキューに登録した場合、タスクはデフォルトのアプリケーション バージョンで呼び出されます。タスクをキューに追加してからタスクが実行されるまでの間にデフォルトのアプリケーション バージョンが変更された場合、タスクは新しいデフォルト バージョンで実行されることに注意してください。

サービスをディスパッチ ファイルと一緒に使用している場合、タスクの HTTP リクエストがインターセプトされて、別のサービスに再ルーティングされる可能性があります。

アプリ内のすべてのキューに対して、次の要素を指定できます。

要素 説明

キュー構成ファイルのデプロイ

queue.yaml ファイルは、ルート ディレクトリまたはデフォルト サービスを定義するディレクトリに配置する必要があります。

キー構成ファイルをデプロイするには、次のコマンドを実行します。

gcloud app deploy queue.yaml

キューの削除

キューを削除するには:

  1. queue.yaml ファイルからキューの定義を削除します。

  2. 変更した queue.yaml ファイルをアップロードします。

    gcloud app deploy queue.yaml

  3. コンソールでキューを削除し、キューを選択して [キューを削除] をクリックします。

    [タスクキュー] ページに移動

コンソールでキューを削除した場合、同じ名前のキューをもう一度作成するには 7 日間経過している必要があります。