queue.yaml リファレンス

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

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

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_concurrent_requests(push キュー)

省略可。指定されたキューから同時に実行できるタスクの最大数を設定します。この値は整数です。デフォルトでは、キューごとに実行できるタスクは 1,000 個までです。

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

mode

省略可。キューモードを指定します。この設定のデフォルト値は push です。その場合、キューは push キューとして識別されます。pull キューを使用する場合は、このモードを pull に設定します。

name

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

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

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

rate(push キュー)

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

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

retry_parameters

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

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

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

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

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

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

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

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

要素 説明

キュー設定ファイルのデプロイ

queue.yaml ファイルは、アプリケーション コード(たとえば、.go ファイル)内のソースコード ディレクトリに配置する必要があります。

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

gcloud

gcloud app deploy queue.yaml

appcfg

元の App Engine SDK をインストールする場合は、次のコマンドを実行できます。

appcfg.py update_queues [YOUR_APP_DIR]

キューを削除する

キューを削除するには、次の手順を行います。

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

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

    gcloud app deploy queue.yaml
    

  3. GCP Console で、キューを選択して [キューを削除] をクリックし、キューを削除します。

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

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

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Go の App Engine スタンダード環境