非同期スクリプトの実行
Embedded Python Execution関数エンドポイント・コールのREST APIのデフォルト・モードは同期であるため、追加のコールを実行する前にREST APIコールが戻る必要があります。非同期モードでコールを実行すると、前のコールが戻るまで待たずに関数エンドポイントを起動できます。
次のステップに従って、スクリプト実行の非同期モードを使用します。
asyncFlagをtrueに設定してスクリプト実行関数をコールします。戻り値は、ジョブのステータスをポーリングするために使用できるジョブIDを含む場所です。- ジョブのステータスを取得します。戻り値の202ステータス・コードは、ジョブが保留中であることを示します。302コードは、ジョブが終了したことを示します。ジョブが終了すると、戻り値にはContent-Locationヘッダーが含まれます。
- スクリプトの結果をフェッチします。
次に、非同期group-applyコールを実行して結果をフェッチする例を示します。この例では、parallelFlag引数をtrueに設定して、データベースの並列性を使用します。
curl -i -X POST \
--header "Authorization: Bearer ${token}" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
-d '{
"asyncFlag": true,
"input": "select * from IRIS",
"parameter": "{\"oml_input_type\":\"pandas.DataFrame\"}",
"groupBy": "Species",
"orderBy": "Sepal_Length",
"parallelFlag": true
}' \
"<oml-cloud-service-location-url>/oml/api/py-scripts/v2/group-apply/group_count"
出力には、ジョブが作成されたことを示すHTTP 201ステータス・コードと、ジョブ・ステータスおよび結果の取得に使用するジョブIDが含まれます。
次の結果では、ジョブが作成されています。
HTTP/1.1 201 Created
Date: Thu, 27 Aug 2020 15:14:04 GMT
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache, no-store, private
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1;mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Set-Cookie: JSESSIONID=node01k14ak2rj75ug1gfbbze9gysl7710.node0; Path=/oml; Secure; HttpOnly
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Location: https://<oml-cloud-service-location-url>/oml/api/py-scripts/v2/jobs/<job id>;
ジョブ・ステータスをポーリングするには、GETメソッドを使用してジョブIDをcURLに渡します。
curl -i -X GET \
--header "Authorization: Bearer ${token}" \
--header 'Accept: application/json' \
"<oml-cloud-service-location-url>/oml/api/py-scripts/v2/jobs/<job id>"
HTTPレスポンス・ステータス202は、ジョブが保留中であることを示します。ステータス
「job is still running」が表示されます。HTTP/2 202
date: Wed, 12 Mar 2025 23:09:20 GMT
content-type: application/json
content-length: 93
strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff
cache-control: no-cache, no-store, must-revalidate
pragma: no-cache
x-frame-options: SAMEORIGIN
x-xss-protection: 1;mode=block
content-security-policy: default-src 'none'; connect-src 'self'; font-src 'self' static.oracle.com; img-src 'self' data: static.oracle.com; media-src 'none'; object-src 'none'; script-src 'self' static.oracle.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' static.oracle.com 'unsafe-inline'; frame-ancestors 'none'
{"createdDate":" Mar 12,2025 22:55","status":"job is still running","elapsedTime":"00:13:32"}HTTPレスポンス・ステータス302は、ジョブが終了したことを示します。Content-Locationには結果の場所があります。
HTTP/1.1 302 Found
Date: Thu, 27 Aug 2020 15:14:26 GMT
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache, no-store, private
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1;mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Content-Location: https://<oml-cloud-service-location-url>/oml/api/py-scripts/v2/jobs/<job id>/result
結果を取得します。
curl -i -X GET \
--header "Authorization: Bearer ${token}" \
--header 'Accept: application/json' \
"<oml-cloud-service-location-url>/oml/api/py-scripts/v2/jobs/<job id>/result"
HTTP/1.1 200 OK
Date: Thu, 27 Aug 2020 15:16:32 GMT
Content-Type: application/json
Content-Length: 5045
Connection: keep-alive
Cache-Control: no-cache, no-store, private
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1;mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
結果の一部を次に示します。
{"result":{"versicolor_8":{"SEPAL_LENGTH":{"0":5.7},"SPECIES":{"0":"versicolor"},"COUNT":{"0":5}},
"versicolor_7":{"SEPAL_LENGTH":{"0":5.6},"SPECIES":{"0":"versicolor"},"COUNT":{"0":2}},
"virginica_20":{"SEPAL_LENGTH":{"0":6.7},"SPECIES":{"0":"virginica"},"COUNT":{"0":1}},...}}}
v2で非同期ジョブを削除するには、DELETEメソッドを使用してジョブIDをcURLに渡します。
ノート:
ジョブIDを再度削除しようとすると、エラー・メッセージ「job not found with id <job id>」が表示されます。
curl -i -k -X DELETE \
--header "Authorization: Bearer ${token}" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
-d '{"service":"LOW"}' \
"<oml-cloud-service-location-url>/oml/api/py-scripts/v2/jobs/<job id>"
HTTPレスポンス・ステータス200は、リクエストが正常に実行されたことを示します。
HTTP/1.1 200 OK
Date: Mon, 10 Feb 2025 22:03:43 GMT
Content-Type: application/json
Content-Length: 112
Connection: keep-alive
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
{
"result": "job deleted successfully"
}