タスクキューの概要

このページでは、タスクキューの概要とその使い方を説明します。タスクキューを使用すると、アプリケーションはユーザー リクエストの外部でタスクと呼ばれる処理を非同期的に実行できます。アプリがバックグラウンドで処理を行う必要がある場合、タスクがタスクキューに追加されます。そのタスクはワーカー サービスによって後で実行されます。

タスクキュー サービスは、非同期処理用に設計されています。タスクの配信タイミングに関する確実な保証はないため、ユーザーが結果を待機する対話型のアプリケーションには適していません。

push キューと pull キュー

タスクキューには push と pull の 2 種類があります。タスクキュー サービスがタスク リクエストをワーカー サービスにディスパッチする方法は、キューの種類ごとに異なります。

push キューは、HTTP リクエストを App Engine ワーカー サービスに送信して、タスクを実行します。これらのリクエストは確実かつ一定の頻度でディスパッチされ、信頼性の高いタスク実行が保証されます。タスクがキューから送信される頻度を制御できるため、ワーカーのスケーリング動作、つまりコストを制御できます。

タスクは、App Engine サービスをターゲットとするリクエストとして実行されるため、厳格な期限が適用されます。自動スケーリング サービスで処理されるタスクは 10 分以内に終了する必要があります。基本および手動スケーリング サービスで処理されるタスクは、最大 24 時間実行できます。

pull キューは タスクをディスパッチしません。このキューは、他のワーカー サービスの必要に応じて自発的にキューからタスクを「リース」します。pull キューは強力で、タスクを処理するタイミングや場所を柔軟に選べますが、プロセス管理の負担が増えます。タスクがリースされると、リースワーカーによって期限が宣言されます。期限までに、ワーカーはそのタスクを完了して削除するか、タスクキュー サービスによって別のワーカーがそのタスクをリースできるようにする必要があります。

タスクキューのすべてのタスクは非同期的に実行されます。タスクを作成したアプリケーションは、タスクをキューに渡します。タスクが完了したかどうか、または成功したかどうかは元のアプリケーションには通知されません。

ワーカーがタスクの処理に失敗した場合、タスクキュー サービスはキューに再試行メカニズムを適用するため、タスクは限られた回数だけ再試行されます。

使用例

push キュー

push キューの典型的な使用例は「スロー」処理です。ソーシャル ネットワークのメッセージング システムでは、ユーザーがメッセージを送信するたびに、送信者のフォロワーを更新する必要があります。この処理には相当の時間がかかる場合があります。push キューを使用すると、アプリケーションは、メッセージが届くたびにそれに対応するタスクをキューに追加し、処理のためにワーカー サービスにディスパッチされるようにできます。ワーカーはタスク リクエストを受信すると、送信者のフォロワーのリストを取得し、フォロワーごとにデータベースを更新できます。データベース更新のたびに別の push タスクをキューに入れると、ワーカーの効率が向上します。

push キューの別の使用例として、スケジュールされたタスクがあります。たとえば、広告キャンペーンを実装するアプリを考えてみましょう。メールを送信するために作成した一連のタスクを、指定した時間になるまで保留するよう指示した上で push キューに追加できます。指定した時間になると、タスクキュー サービスがリスクエストの発行を開始し、タスクを実行します。

次のステップ