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