Cloud Talent Solution 支持异步批量操作,因而您可以将多个 API 调用放入单个 HTTP 请求中。返回的响应类型为 google.longrunning.operation
。通过使用 google.longrunning.operation
中的 name
字段调用 GetOperation
方法,可以检索批量处理的详细状态。
使用批量操作功能可以缩短 API 响应延时,并可提高吞吐量。请注意,成功收到批量 API 响应仅表示已创建批量请求。实际的数据处理是异步完成的。超过 30 天前创建的批量操作将无法再通过 GetOperation
方法访问。
每批最多可处理 200 个请求。
批量操作进度指示器
通过调用批量创建或更新方法创建的 google.longrunning.operation
处于以下状态之一:
- 状态不明(默认值)
- 正在初始化
- 正在处理
- 成功
- 失败
在“正在初始化”状态下,success_count
、failure_count
和 total_count
字段设置为 0。如果操作处于“正在处理”状态,则 success_count
和 failure_count
可能会增加。在“成功”状态下,success_count
+ failure_count
始终等于 total_count
,success_count
> 0。在“失败”状态下,success_count
始终为 0。
批量创建职位
以下代码示例演示了如何批量创建职位:
Python
如需进行 CTS 身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
from google.cloud import talent_v4beta1
import six
def sample_batch_create_jobs(project_id, tenant_id, company_name_one,
requisition_id_one, title_one, description_one,
job_application_url_one, address_one,
language_code_one, company_name_two,
requisition_id_two, title_two, description_two,
job_application_url_two, address_two,
language_code_two):
"""
Batch Create Jobs
Args:
project_id Your Google Cloud Project ID
tenant_id Identifier of the Tenant
"""
client = talent_v4beta1.JobServiceClient()
# project_id = 'Your Google Cloud Project ID'
# tenant_id = 'Your Tenant ID (using tenancy is optional)'
# company_name_one = 'Company name, e.g. projects/your-project/companies/company-id'
# requisition_id_one = 'Job requisition ID, aka Posting ID. Unique per job.'
# title_one = 'Software Engineer'
# description_one = 'This is a description of this <i>wonderful</i> job!'
# job_application_url_one = 'https://www.example.org/job-posting/123'
# address_one = '1600 Amphitheatre Parkway, Mountain View, CA 94043'
# language_code_one = 'en-US'
# company_name_two = 'Company name, e.g. projects/your-project/companies/company-id'
# requisition_id_two = 'Job requisition ID, aka Posting ID. Unique per job.'
# title_two = 'Quality Assurance'
# description_two = 'This is a description of this <i>wonderful</i> job!'
# job_application_url_two = 'https://www.example.org/job-posting/123'
# address_two = '111 8th Avenue, New York, NY 10011'
# language_code_two = 'en-US'
if isinstance(project_id, six.binary_type):
project_id = project_id.decode('utf-8')
if isinstance(tenant_id, six.binary_type):
tenant_id = tenant_id.decode('utf-8')
if isinstance(company_name_one, six.binary_type):
company_name_one = company_name_one.decode('utf-8')
if isinstance(requisition_id_one, six.binary_type):
requisition_id_one = requisition_id_one.decode('utf-8')
if isinstance(title_one, six.binary_type):
title_one = title_one.decode('utf-8')
if isinstance(description_one, six.binary_type):
description_one = description_one.decode('utf-8')
if isinstance(job_application_url_one, six.binary_type):
job_application_url_one = job_application_url_one.decode('utf-8')
if isinstance(address_one, six.binary_type):
address_one = address_one.decode('utf-8')
if isinstance(language_code_one, six.binary_type):
language_code_one = language_code_one.decode('utf-8')
if isinstance(company_name_two, six.binary_type):
company_name_two = company_name_two.decode('utf-8')
if isinstance(requisition_id_two, six.binary_type):
requisition_id_two = requisition_id_two.decode('utf-8')
if isinstance(title_two, six.binary_type):
title_two = title_two.decode('utf-8')
if isinstance(description_two, six.binary_type):
description_two = description_two.decode('utf-8')
if isinstance(job_application_url_two, six.binary_type):
job_application_url_two = job_application_url_two.decode('utf-8')
if isinstance(address_two, six.binary_type):
address_two = address_two.decode('utf-8')
if isinstance(language_code_two, six.binary_type):
language_code_two = language_code_two.decode('utf-8')
parent = client.tenant_path(project_id, tenant_id)
uris = [job_application_url_one]
application_info = {'uris': uris}
addresses = [address_one]
jobs_element = {
'company': company_name_one,
'requisition_id': requisition_id_one,
'title': title_one,
'description': description_one,
'application_info': application_info,
'addresses': addresses,
'language_code': language_code_one
}
uris_2 = [job_application_url_two]
application_info_2 = {'uris': uris_2}
addresses_2 = [address_two]
jobs_element_2 = {
'company': company_name_two,
'requisition_id': requisition_id_two,
'title': title_two,
'description': description_two,
'application_info': application_info_2,
'addresses': addresses_2,
'language_code': language_code_two
}
jobs = [jobs_element, jobs_element_2]
operation = client.batch_create_jobs(parent, jobs)
print('Waiting for operation to complete...')
response = operation.result()
print('Batch response: {}'.format(response))
批量更新职位
以下代码示例演示了如何批量更新职位:
Python
如需进行 CTS 身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
from google.cloud import talent_v4beta1
import six
def sample_batch_update_jobs(project_id, tenant_id, job_name_one,
company_name_one, requisition_id_one, title_one,
description_one, job_application_url_one,
address_one, language_code_one, job_name_two,
company_name_two, requisition_id_two, title_two,
description_two, job_application_url_two,
address_two, language_code_two):
"""
Batch Update Jobs
Args:
project_id Your Google Cloud Project ID
tenant_id Identifier of the Tenant
"""
client = talent_v4beta1.JobServiceClient()
# project_id = 'Your Google Cloud Project ID'
# tenant_id = 'Your Tenant ID (using tenancy is optional)'
# job_name_one = 'job name, e.g. projects/your-project/tenants/tenant-id/jobs/job-id'
# company_name_one = 'Company name, e.g. projects/your-project/companies/company-id'
# requisition_id_one = 'Job requisition ID, aka Posting ID. Unique per job.'
# title_one = 'Software Engineer'
# description_one = 'This is a description of this <i>wonderful</i> job!'
# job_application_url_one = 'https://www.example.org/job-posting/123'
# address_one = '1600 Amphitheatre Parkway, Mountain View, CA 94043'
# language_code_one = 'en-US'
# job_name_two = 'job name, e.g. projects/your-project/tenants/tenant-id/jobs/job-id'
# company_name_two = 'Company name, e.g. projects/your-project/companies/company-id'
# requisition_id_two = 'Job requisition ID, aka Posting ID. Unique per job.'
# title_two = 'Quality Assurance'
# description_two = 'This is a description of this <i>wonderful</i> job!'
# job_application_url_two = 'https://www.example.org/job-posting/123'
# address_two = '111 8th Avenue, New York, NY 10011'
# language_code_two = 'en-US'
if isinstance(project_id, six.binary_type):
project_id = project_id.decode('utf-8')
if isinstance(tenant_id, six.binary_type):
tenant_id = tenant_id.decode('utf-8')
if isinstance(job_name_one, six.binary_type):
job_name_one = job_name_one.decode('utf-8')
if isinstance(company_name_one, six.binary_type):
company_name_one = company_name_one.decode('utf-8')
if isinstance(requisition_id_one, six.binary_type):
requisition_id_one = requisition_id_one.decode('utf-8')
if isinstance(title_one, six.binary_type):
title_one = title_one.decode('utf-8')
if isinstance(description_one, six.binary_type):
description_one = description_one.decode('utf-8')
if isinstance(job_application_url_one, six.binary_type):
job_application_url_one = job_application_url_one.decode('utf-8')
if isinstance(address_one, six.binary_type):
address_one = address_one.decode('utf-8')
if isinstance(language_code_one, six.binary_type):
language_code_one = language_code_one.decode('utf-8')
if isinstance(job_name_two, six.binary_type):
job_name_two = job_name_two.decode('utf-8')
if isinstance(company_name_two, six.binary_type):
company_name_two = company_name_two.decode('utf-8')
if isinstance(requisition_id_two, six.binary_type):
requisition_id_two = requisition_id_two.decode('utf-8')
if isinstance(title_two, six.binary_type):
title_two = title_two.decode('utf-8')
if isinstance(description_two, six.binary_type):
description_two = description_two.decode('utf-8')
if isinstance(job_application_url_two, six.binary_type):
job_application_url_two = job_application_url_two.decode('utf-8')
if isinstance(address_two, six.binary_type):
address_two = address_two.decode('utf-8')
if isinstance(language_code_two, six.binary_type):
language_code_two = language_code_two.decode('utf-8')
parent = client.tenant_path(project_id, tenant_id)
uris = [job_application_url_one]
application_info = {'uris': uris}
addresses = [address_one]
jobs_element = {
'name': job_name_one,
'company': company_name_one,
'requisition_id': requisition_id_one,
'title': title_one,
'description': description_one,
'application_info': application_info,
'addresses': addresses,
'language_code': language_code_one
}
uris_2 = [job_application_url_two]
application_info_2 = {'uris': uris_2}
addresses_2 = [address_two]
jobs_element_2 = {
'name': job_name_two,
'company': company_name_two,
'requisition_id': requisition_id_two,
'title': title_two,
'description': description_two,
'application_info': application_info_2,
'addresses': addresses_2,
'language_code': language_code_two
}
jobs = [jobs_element, jobs_element_2]
operation = client.batch_update_jobs(parent, jobs)
print('Waiting for operation to complete...')
response = operation.result()
print('Batch response: {}'.format(response))
批量删除职位
以下代码示例演示了如何批量删除作业:
Node.js
如需进行 CTS 身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
const talent = require('@google-cloud/talent').v4;
/**
* Batch delete jobs using a filter
*
* @param projectId {string} Your Google Cloud Project ID
* @param tenantId {string} Identifier of the Tenantd
* @param filter {string} The filter string specifies the jobs to be deleted.
* For example:
* companyName = "projects/api-test-project/companies/123" AND equisitionId = "req-1"
*/
function sampleBatchDeleteJobs(projectId, tenantId, filter) {
const client = new talent.JobServiceClient();
// const projectId = 'Your Google Cloud Project ID';
// const tenantId = 'Your Tenant ID (using tenancy is optional)';
// const filter = '[Query]';
const formattedParent = client.tenantPath(projectId, tenantId);
const request = {
parent: formattedParent,
filter: filter,
};
client.batchDeleteJobs(request).catch(err => {
console.error(err);
});
console.log('Batch deleted jobs from filter');
}