タスクが pull キューに入ると、ワーカーはそれらをリースできます。タスクが処理されたら、ワーカーはそのタスクを削除する必要があります。
始める前に
注意事項
- このメソッドは、スタンダード環境のサービス内で実行されているワーカーにのみ適用されます。
- pull キューを使用する場合は、処理量に基づいてワーカーの規模を調整する必要があります。
タスクのリース
タスクがキューに入った後、ワーカーは taskqueue.Lease
メソッドを使用して、1 つまたは複数のタスクをリースできます。taskqueue.Add
を使用して最近追加したタスクが taskqueue.Lease
で利用可能になるまでに少し時間がかかることがあります。
リースをリクエストするときは、リースするタスクの数(最大 1,000 個)とリースの期間(秒単位で最大 1 週間)を指定します。最も時間のかかるタスクがリースの期限までに確実に終了するように、リース期間を十分長くする必要があります。タスクのリースは taskqueue.ModifyLease
を使用して変更できます。
タスクをリースすると、そのタスクはリースの期限まで別のワーカーが処理できなくなります。
次のコードサンプルでは、100 個のタスクをキュー pull-queue
から 1 時間リースします。
タスクタグによる一括処理
タスクはすべて同様とは限りません。コードでタスクにタグ付けし、リースするタスクをタグで選択できます。タグがフィルタの役割を果たします。次のコードサンプルは、タスクにタグが付けられ、そのタグによってタスクがリースされる方法を示しています。
ポーリング レートの規制
タスクをリースするためにキューをポーリングするワーカーは、そのキューからタスクをリースするよりも早くリースしようとしているかどうかを検出する必要があります。このエラーが発生すると、taskqueue.Lease
からバックオフ エラーが返されます。
使用しているコードでこのエラーを処理し、taskqueue.Lease
呼び出しをバックオフして後で再試行する必要があります。この問題を回避するには、taskqueue.Lease
を呼び出すときに RPC の期限を長く設定してみます。リース リクエストによってタスクの空のリストが返された場合にも、バックオフが必要です。1 つのキューにつき 1 秒あたりに 10 個以上の LeaseTasks リクエストが生成された場合、最初の 10 個のリクエストのみ結果が返されます。リクエストがこの上限を超えている場合は、OK
が返され、結果は返されません。
Google Cloud コンソールでのタスクのモニタリング
アプリケーション内のすべてのタスクおよびキューに関する情報を表示するには、次の手順を行います。
Google Cloud コンソールで [Cloud Tasks] ページを開き、[種類] 列の [pull] の値を確認します。
目的のキューの名前をクリックして、[キューの詳細] ページを開きます。選択したキュー内のすべてのタスクが表示されます。
タスクの削除
ワーカーはタスクを完了したら、そのタスクをキューから削除する必要があります。ワーカーが処理を終了した後にキューにタスクが残っている場合は、ワーカーが失敗したことが考えられます。その場合、そのタスクは別のワーカーによって処理されます。
タスクのリスト(taskqueue.Lease
から返されたリストなど)を削除するには、リストを taskqueue.DeleteMulti
に渡します。