Go での pull キューの使用
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このページでは、App Engine スタンダード環境での pull キューの概要について説明します。
push キューでは、タスクはキューの構成に基づいてワーカー サービスに配信されます。pull キューでは、ワーカー サービスがキューに対してタスクに関する「問い合わせ」を行う必要があります。キューは、一定の期間タスクを処理する権限をワーカーに許可します。このプロセスをリースといいます。

pull キューを使用すると、関連するタスクをタグでグループ化し、特定のタグを持つ複数のタスクを一度に pull するようにワーカーを構成することもできます。このプロセスは「バッチ処理」と呼ばれます。
リースが期限切れになる前にワーカーがタスクを完了できない場合、リースを更新することも、別のワーカーが取得できるように解放することもできます。タスクに関連付けられた処理が完了したら、ワーカーはそのタスクを削除する必要があります。
pull キューを使用する場合は、push キューで自動的に実行される関数をコード側で処理する必要があります。
- ワーカーのスケーリング
- コードは、処理量に応じてワーカーの数をスケールする必要があります。コード側でスケーリングを行わないと、処理するタスクがない場合に、コンピューティング リソースを浪費するリスクがあります。処理するタスクが多すぎる場合も、レイテンシが発生するリスクがあります。
- タスクの削除
- 処理が終了したら、コードで明示的にタスクを削除する必要があります。push キューでは、App Engine でタスクが自動的に削除されます。処理の終わった pull キューのタスクをワーカーが削除しないと、別のワーカーがそのタスクを再度処理してしまいます。タスクがべき等でない場合は、コンピューティング リソースを浪費してエラーが発生するリスクがあります。
App Engine スタンダード環境で pull キューを作成するには、queue.yaml
という名前の構成ファイルでプロパティを設定します。
pull キューのワークフロー
pull キューからタスクを処理するワーカーは、App Engine スタンダード環境で実行されるサービス内で定義する必要があります。
ワークフローは次のとおりです。
queue.yaml
を使用して pull キューを作成します。
- タスクを作成してキューに追加します。
- 事前に作成しておいたワーカーが、TaskQueue を使用してタスクをリースします。
- App Engine が、リース レスポンスでワーカーにタスクデータを送信します。
- ワーカーがタスクを処理します。リースの期限までにタスクを実行できなかった場合、ワーカーはリース期間を変更できます。リースが期限切れになると、そのタスクは別のワーカーにリースできるようになります。
- タスクの処理が正常に完了したら、ワーカーがそのタスクを削除します。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-04-03 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-04-03 UTC。"],[[["Pull queues in the App Engine standard environment require worker services to actively request tasks, in contrast to push queues where tasks are automatically delivered."],["Workers in pull queues operate on tasks with a lease, a designated period of exclusive access, after which the task can be processed by another worker if not completed."],["Pull queues enable task batching through the use of tags, allowing workers to retrieve multiple related tasks simultaneously."],["Unlike push queues, pull queue implementations necessitate manual scaling of workers and explicit task deletion by the worker service after completion to avoid resource waste or errors."],["The workflow for pull queues involves creating a queue via `queue.yaml`, adding tasks, leasing tasks to a worker, processing, potentially modifying the lease duration, and finally, deleting the completed task."]]],[]]