跳到主要内容

GetImportJobProgress()

此操作用于根据任务 ID 获取批量导入任务的当前进度与状态。请在调用 CreateImportJobs() 后轮询该方法,以确认导入是否完成。

c++
static nlohmann::json BulkImport::GetImportJobProgress(
const std::string& url,
const std::string& job_id,
const std::string& db_name = "default",
const std::string& api_key = "")

请求语法

c++
auto resp = milvus::BulkImport::GetImportJobProgress(
url,
job_id,
db_name,
api_key);

参数:

  • url (const std::string&)

    [必填]

    Milvus 服务器的 URL,例如 "YOUR_CLUSTER_ENDPOINT"

  • job_id (const std::string&)

    [必填]

    待查询的导入任务 ID,可从 CreateImportJobs() 的响应中获取。

  • db_name (const std::string&)

    创建任务时指定的 Database 名称,默认值为 "default"

  • api_key (const std::string&)

    用于身份验证的 API 密钥。若连接 Milvus,请传入 "username:password";若连接 Zilliz Cloud,请使用云 API 密钥。

返回值:

nlohmann::json

返回描述任务进度的 JSON 对象,失败时则返回 nullptr。该对象包含 state(含 "Pending""InProgress""Completed""Failed")、progress(0–100)以及 importedRows 等字段。

异常:

  • std::exception

    当 HTTP 请求失败或无法解析响应时抛出此异常。您可以通过检查返回值中的 nullptr 来判断是否发生错误。

示例

c++
#include "milvus/MilvusClientV2.h"
auto client = milvus::MilvusClientV2::Create();
milvus::ConnectParam connect_param{"YOUR_CLUSTER_ENDPOINT", "root", "Milvus"};
auto status = client->Connect(connect_param);
if (!status.IsOk()) {
std::cout << status.Message() << std::endl;
}

// Create a job first
auto create_resp = milvus::BulkImport::CreateImportJobs(
"YOUR_CLUSTER_ENDPOINT",
"my_collection",
{"parquet-folder/1.parquet"},
"default",
"YOUR_CLUSTER_TOKEN"
);

std::string job_id = create_resp["data"]["jobId"];

// Poll for progress
while (true) {
auto progress_resp = milvus::BulkImport::GetImportJobProgress(
"YOUR_CLUSTER_ENDPOINT",
job_id,
"default",
"YOUR_CLUSTER_TOKEN"
);

if (progress_resp.is_null()) {
std::cout << "Failed to get progress" << std::endl;
break;
}

std::string state = progress_resp["data"]["state"];
int progress = progress_resp["data"]["progress"];
std::cout << "State: " << state << " Progress: " << progress << "%" << std::endl;

if (state == "Completed" || state == "Failed") break;
std::this_thread::sleep_for(std::chrono::seconds(2));
}
最低 SDK 版本v2.6.x
Ctrl I