Cloud Talent Solution unterstützt asynchrone Batch-Vorgänge, mit denen Sie mehrere API-Aufrufe in eine einzelne HTTP-Anforderung einfügen können. Der zurückgegebene Antworttyp ist google.longrunning.operation
. Der detaillierte Status der Stapeloperation kann durch Aufrufen der Methode GetOperation
mithilfe des Felds name
in google.longrunning.operation
abgerufen werden.
Die Verwendung von Batching führt zu einer verringerten Latenz in der API-Antwortzeit und einem höheren Durchsatz. Beachten Sie, dass der erfolgreiche Empfang einer Batch-API-Antwort nur anzeigt, dass die Batch-Anforderung erstellt wurde.
Die eigentliche Datenverarbeitung erfolgt asynchron. Vor mehr als 30 Tagen erstellte Stapeloperationen sind mit der Methode GetOperation
nicht mehr verfügbar.
Jeder Batch ist auf 200 Anfragen beschränkt.
Fortschrittsanzeige für den Stapelbetrieb
Das durch Aufrufen der Batch-Erstellungs- oder Aktualisierungsmethode erstellte google.longrunning.operation
fällt in einen der folgenden Zustände:
- STATE_UNSPECIFIED (der Standardwert)
- INITIALISIERUNG
- Verarbeitung
- Erfolgreich
- FEHLER
Im Status INITALISIERUNG werden die Felder success_count
, failure_count
und total_count
auf 0 gesetzt. Wenn sich die Operation im Status VERARBEITUNG befindet, können sich success_count
und failure_count
erhöhen. Im Status ERFOLGREICH ist success_count
+ failure_count
immer gleich total_count
und success_count
> 0. Im Status FEHLER ist success_count
immer 0.
Batch erstellen Jobs
Das folgende Codebeispiel zeigt, wie Jobs im Stapel erstellt werden:
PHP
require __DIR__.'/../../vendor/autoload.php';
use Google\Cloud\Talent\V4beta1\JobServiceClient;
use Google\Cloud\Talent\V4beta1\Job;
use Google\Cloud\Talent\V4beta1\Job_ApplicationInfo;
/**
* Batch Create Jobs.
*
* @param string $projectId Your Google Cloud Project ID
* @param string $tenantId Identifier of the Tenant
*/
function sampleBatchCreateJobs($projectId, $tenantId, $companyNameOne, $requisitionIdOne, $titleOne, $descriptionOne, $jobApplicationUrlOne, $addressOne, $languageCodeOne, $companyNameTwo, $requisitionIdTwo, $titleTwo, $descriptionTwo, $jobApplicationUrlTwo, $addressTwo, $languageCodeTwo)
{
$jobServiceClient = new JobServiceClient();
// $projectId = 'Your Google Cloud Project ID';
// $tenantId = 'Your Tenant ID (using tenancy is optional)';
// $companyNameOne = 'Company name, e.g. projects/your-project/companies/company-id';
// $requisitionIdOne = 'Job requisition ID, aka Posting ID. Unique per job.';
// $titleOne = 'Software Engineer';
// $descriptionOne = 'This is a description of this <i>wonderful</i> job!';
// $jobApplicationUrlOne = 'https://www.example.org/job-posting/123';
// $addressOne = '1600 Amphitheatre Parkway, Mountain View, CA 94043';
// $languageCodeOne = 'en-US';
// $companyNameTwo = 'Company name, e.g. projects/your-project/companies/company-id';
// $requisitionIdTwo = 'Job requisition ID, aka Posting ID. Unique per job.';
// $titleTwo = 'Quality Assurance';
// $descriptionTwo = 'This is a description of this <i>wonderful</i> job!';
// $jobApplicationUrlTwo = 'https://www.example.org/job-posting/123';
// $addressTwo = '111 8th Avenue, New York, NY 10011';
// $languageCodeTwo = 'en-US';
$formattedParent = $jobServiceClient->tenantName($projectId, $tenantId);
$uris = [$jobApplicationUrlOne];
$applicationInfo = new Job_ApplicationInfo();
$applicationInfo->setUris($uris);
$addresses = [$addressOne];
$jobsElement = new Job();
$jobsElement->setCompany($companyNameOne);
$jobsElement->setRequisitionId($requisitionIdOne);
$jobsElement->setTitle($titleOne);
$jobsElement->setDescription($descriptionOne);
$jobsElement->setApplicationInfo($applicationInfo);
$jobsElement->setAddresses($addresses);
$jobsElement->setLanguageCode($languageCodeOne);
$uris2 = [$jobApplicationUrlTwo];
$applicationInfo2 = new Job_ApplicationInfo();
$applicationInfo2->setUris($uris2);
$addresses2 = [$addressTwo];
$jobsElement2 = new Job();
$jobsElement2->setCompany($companyNameTwo);
$jobsElement2->setRequisitionId($requisitionIdTwo);
$jobsElement2->setTitle($titleTwo);
$jobsElement2->setDescription($descriptionTwo);
$jobsElement2->setApplicationInfo($applicationInfo2);
$jobsElement2->setAddresses($addresses2);
$jobsElement2->setLanguageCode($languageCodeTwo);
$jobs = [$jobsElement, $jobsElement2];
try {
$operationResponse = $jobServiceClient->batchCreateJobs($formattedParent, $jobs);
$operationResponse->pollUntilComplete();
if ($operationResponse->operationSucceeded()) {
$response = $operationResponse->getResult();
printf('Batch response: %s'.PHP_EOL, print_r($response, true));
} else {
$error = $operationResponse->getError();
// handleError($error)
}
} finally {
$jobServiceClient->close();
}
}
Python
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))
Ruby
require "google/cloud/talent"
# Instantiate a client
job_service = Google::Cloud::Talent.job_service
# project_id = "Your Google Cloud Project ID"
# tenant_id = "Your Tenant ID (using tenancy is required)"
formatted_parent = job_service.tenant_path project: project_id, tenant: tenant_id
# job_application_url_one = "https://www.example.org/job-posting/123"
uris = [job_application_url_one]
application_info = { uris: uris }
# address_one = "1600 Amphitheatre Parkway, Mountain View, CA 94043"
addresses = [address_one]
# 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!"
# language_code_one = "en-US"
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
}
# job_application_url_two = "https://www.example.org/job-posting/123"
uris_2 = [job_application_url_two]
application_info_2 = { uris: uris_2 }
# address_two = "111 8th Avenue, New York, NY 10011"
addresses_2 = [address_two]
# 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!"
# language_code_two = "en-US"
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]
# Make the long-running operation request
operation = job_service.batch_create_jobs parent: formatted_parent, jobs: jobs
# Block until operation complete
operation.wait_until_done!
raise operation.results.message if operation.error?
response = operation.response
puts "Batch response: #{response.inspect}"
Batch-Aktualisierungsjobs
Das folgende Codebeispiel zeigt, wie Jobs im Batch aktualisiert werden:
PHP
require __DIR__.'/../../vendor/autoload.php';
use Google\Cloud\Talent\V4beta1\JobServiceClient;
use Google\Cloud\Talent\V4beta1\Job;
use Google\Cloud\Talent\V4beta1\Job_ApplicationInfo;
/**
* Batch Update Jobs.
*
* @param string $projectId Your Google Cloud Project ID
* @param string $tenantId Identifier of the Tenant
*/
function sampleBatchUpdateJobs($projectId, $tenantId, $jobNameOne, $companyNameOne, $requisitionIdOne, $titleOne, $descriptionOne, $jobApplicationUrlOne, $addressOne, $languageCodeOne, $jobNameTwo, $companyNameTwo, $requisitionIdTwo, $titleTwo, $descriptionTwo, $jobApplicationUrlTwo, $addressTwo, $languageCodeTwo)
{
$jobServiceClient = new JobServiceClient();
// $projectId = 'Your Google Cloud Project ID';
// $tenantId = 'Your Tenant ID (using tenancy is optional)';
// $jobNameOne = 'job name, e.g. projects/your-project/tenants/tenant-id/jobs/job-id';
// $companyNameOne = 'Company name, e.g. projects/your-project/companies/company-id';
// $requisitionIdOne = 'Job requisition ID, aka Posting ID. Unique per job.';
// $titleOne = 'Software Engineer';
// $descriptionOne = 'This is a description of this <i>wonderful</i> job!';
// $jobApplicationUrlOne = 'https://www.example.org/job-posting/123';
// $addressOne = '1600 Amphitheatre Parkway, Mountain View, CA 94043';
// $languageCodeOne = 'en-US';
// $jobNameTwo = 'job name, e.g. projects/your-project/tenants/tenant-id/jobs/job-id';
// $companyNameTwo = 'Company name, e.g. projects/your-project/companies/company-id';
// $requisitionIdTwo = 'Job requisition ID, aka Posting ID. Unique per job.';
// $titleTwo = 'Quality Assurance';
// $descriptionTwo = 'This is a description of this <i>wonderful</i> job!';
// $jobApplicationUrlTwo = 'https://www.example.org/job-posting/123';
// $addressTwo = '111 8th Avenue, New York, NY 10011';
// $languageCodeTwo = 'en-US';
$formattedParent = $jobServiceClient->tenantName($projectId, $tenantId);
$uris = [$jobApplicationUrlOne];
$applicationInfo = new Job_ApplicationInfo();
$applicationInfo->setUris($uris);
$addresses = [$addressOne];
$jobsElement = new Job();
$jobsElement->setName($jobNameOne);
$jobsElement->setCompany($companyNameOne);
$jobsElement->setRequisitionId($requisitionIdOne);
$jobsElement->setTitle($titleOne);
$jobsElement->setDescription($descriptionOne);
$jobsElement->setApplicationInfo($applicationInfo);
$jobsElement->setAddresses($addresses);
$jobsElement->setLanguageCode($languageCodeOne);
$uris2 = [$jobApplicationUrlTwo];
$applicationInfo2 = new Job_ApplicationInfo();
$applicationInfo2->setUris($uris2);
$addresses2 = [$addressTwo];
$jobsElement2 = new Job();
$jobsElement2->setName($jobNameTwo);
$jobsElement2->setCompany($companyNameTwo);
$jobsElement2->setRequisitionId($requisitionIdTwo);
$jobsElement2->setTitle($titleTwo);
$jobsElement2->setDescription($descriptionTwo);
$jobsElement2->setApplicationInfo($applicationInfo2);
$jobsElement2->setAddresses($addresses2);
$jobsElement2->setLanguageCode($languageCodeTwo);
$jobs = [$jobsElement, $jobsElement2];
try {
$operationResponse = $jobServiceClient->batchUpdateJobs($formattedParent, $jobs);
$operationResponse->pollUntilComplete();
if ($operationResponse->operationSucceeded()) {
$response = $operationResponse->getResult();
printf('Batch response: %s'.PHP_EOL, print_r($response, true));
} else {
$error = $operationResponse->getError();
// handleError($error)
}
} finally {
$jobServiceClient->close();
}
}
Python
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))
Batch-Löschjobs
Node.js
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');
}