ONTAP Select の Job オブジェクトを使用した非同期処理
Deploy API の呼び出しの中には、特にリソースを作成または変更する呼び出しは、他の呼び出しよりも完了に時間がかかる場合があります。ONTAP Select Deploy は、これらの長時間実行されるリクエストを非同期で処理します。
ジョブ オブジェクトを使用して記述された非同期要求
非同期的に実行されるAPI呼び出しを行うと、HTTP応答コード202が返されます。この応答コードは、要求が正常に検証され受け入れられたものの、まだ完了していないことを示します。要求はバックグラウンド タスクとして処理され、クライアントへの最初のHTTP応答後も引き続き実行されます。応答には、要求に対応するジョブ オブジェクトと、その一意の識別子が含まれます。
|
|
どの API 呼び出しが非同期で動作するかを判断するには、ONTAP Select Deploy オンライン ドキュメント ページを参照してください。 |
API リクエストに関連付けられた Job オブジェクトを照会する
HTTP応答で返されるジョブ オブジェクトには、いくつかのプロパティが含まれています。状態プロパティを照会して、要求が正常に完了したかどうかを確認できます。ジョブ オブジェクトは次のいずれかの状態になります。
-
キュー登録済み
-
実行中
-
成功
-
失敗
ジョブ オブジェクトをポーリングしてタスクの最終状態(成功または失敗)を検出するには、2つの方法があります。
-
標準のポーリング要求 現在のジョブの状態はすぐに返されます
-
ロングポーリングリクエストのジョブ状態は、以下のいずれかの条件が満たされた場合にのみ返されます:
-
ポーリング要求で指定された日時値よりも最近、状態が変更されました
-
タイムアウト値が経過しました(1~120秒)
-
標準ポーリングとロングポーリングは、ジョブオブジェクトを照会するために同じAPI呼び出しを使用します。ただし、ロングポーリングリクエストには2つのクエリパラメータが含まれます( poll_timeout`および `last_modified)。
|
|
Deploy 仮想マシンのワークロードを軽減するには、常にロング ポーリングを使用する必要があります。 |
非同期要求を発行するための一般的な手順
以下は、非同期API呼び出しを完了する手順の概要です。
-
非同期API呼び出しを実行します。
-
要求が正常に受け取られたことを示すHTTP応答202を受信します。
-
応答の本文からジョブ オブジェクトの識別子を抽出します。
-
ループ内で、各サイクルで以下の処理を実行します:
-
ロングポーリングリクエストを使用してジョブの現在の状態を取得します
-
ジョブが非終了状態(キューに入っている、実行中)の場合は、ループを再度実行します。
-
-
ジョブが終了状態(成功、失敗)に達したら停止します。