このページでは、App Engine スタンダード環境での pull キューの概要について説明します。
push キューでは、タスクはキューの構成に基づいてワーカー サービスに配信されます。pull キューでは、ワーカー サービスがキューに対してタスクに関する「問い合わせ」を行う必要があります。キューは、一定の期間タスクを処理する権限をワーカーに許可します。このプロセスをリースといいます。
pull キューを使用すると、関連するタスクをタグでグループ化し、特定のタグを持つ複数のタスクを一度に pull するようにワーカーを構成することもできます。このプロセスは「バッチ処理」と呼ばれます。
リースが期限切れになる前にワーカーがタスクを完了できない場合、リースを更新することも、別のワーカーが取得できるように解放することもできます。タスクに関連付けられた処理が完了したら、ワーカーはそのタスクを削除する必要があります。
pull キューを使用する場合は、push キューで自動的に実行される関数をコード側で処理する必要があります。
- ワーカーのスケーリング
- コードは、処理量に応じてワーカーの数をスケールする必要があります。コード側でスケーリングを行わないと、処理するタスクがない場合に、コンピューティング リソースを浪費するリスクがあります。処理するタスクが多すぎる場合も、レイテンシが発生するリスクがあります。
- タスクの削除
- 処理が終了したら、コードで明示的にタスクを削除する必要があります。push キューでは、App Engine でタスクが自動的に削除されます。処理の終わった pull キューのタスクをワーカーが削除しないと、別のワーカーがそのタスクを再度処理してしまいます。タスクがべき等でない場合は、コンピューティング リソースを浪費してエラーが発生するリスクがあります。
App Engine スタンダード環境で pull キューを作成するには、
という名前の構成ファイルでプロパティを設定します。queue.xml
pull キューのワークフロー
pull キューからタスクを処理するワーカーは、App Engine スタンダード環境で実行されるサービス内で定義する必要があります。
ワークフローは次のとおりです。
を使用して pull キューを作成します。queue.xml
- タスクを作成してキューに追加します。
- 事前に作成しておいたワーカーが、TaskQueue を使用してタスクをリースします。
- App Engine が、リース応答でワーカーにタスクデータを送信します。
- ワーカーがタスクを処理します。リースの期限までにタスクを実行できなかった場合、ワーカーはリース期間を変更できます。リースが期限切れになると、そのタスクは別のワーカーにリースできるようになります。
- タスクの処理が正常に完了したら、ワーカーがそのタスクを削除します。
次のステップ
- pull キューを作成する方法を学習します。