Python で pull キューを使用する

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

図

pull キューを使用すると、関連するタスクをタグでグループ化し、特定のタグを持つ複数のタスクを一度に pull するようにワーカーを設定することもできます。このプロセスは「バッチ処理」と呼ばれます。

リースが期限切れになる前にワーカーがタスクを完了できない場合、リースを更新することも、別のワーカーが取得できるように解放することもできます。タスクに関連付けられた処理が完了したら、ワーカーはそのタスクを削除する必要があります。

pull キューを使用する場合は、push キューで自動的に実行される関数をコード側で処理する必要があります。

ワーカーのスケーリング
コードは、処理量に応じてワーカーの数を増減する必要があります。コード側で増減を行わないと、処理するタスクがない場合に、コンピューティング リソースを浪費するリスクがあります。処理するタスクが多すぎる場合も、レイテンシが発生するリスクがあります。
タスクの削除
処理が終了したら、コードで明示的にタスクを削除する必要があります。push キューでは、App Engine がタスクを自動的に削除してくれます。処理の終わった pull キューのタスクをワーカーが削除しないと、別のワーカーがそのタスクを再度処理してしまいます。タスクがべき等でない場合は、コンピューティング リソースを浪費してエラーが発生するリスクがあります。

App Engine スタンダード環境では、queue.yaml という構成ファイルでプロパティを設定して、pull キューを作成します。

pull キューのワークフロー

pull キューからタスクを処理するワーカーは、App Engine スタンダード環境で実行されるサービス内で定義する必要があります。

ワークフローは次のとおりです。

  1. queue.yaml を使用して、pull キューを作成します。
  2. タスクを作成して、キューに追加します。
  3. 作成したワーカーが、TaskQueue を使用してタスクをリースします。
  4. App Engine が、リース レスポンスでタスクデータをワーカーに送信します。
  5. ワーカーがタスクを処理します。タスクをリースの期限までに実行できなかった場合、ワーカーはリース期間を変更できます。リースが期限切れになると、そのタスクは別のワーカーにリースできるようになります。
  6. タスクの処理が正常に完了したら、ワーカーがそのタスクを削除します。

次のステップ

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

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

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