Cloud Talent Solution admite operaciones por lotes asincrónicas, lo que te permite incluir múltiples llamadas a la API en una sola solicitud HTTP. El tipo de respuesta que se muestra es google.longrunning.operation
. El estado detallado de la operación por lotes se puede recuperar si llamas al método GetOperation
mediante el campo name
en google.longrunning.operation
.
El uso de rendimientos por lotes disminuyó la latencia en el tiempo de respuesta de la API y aumentó la capacidad de procesamiento. Ten en cuenta que recibir con éxito una respuesta de la API por lotes solo indica que se ha creado la solicitud por lotes.
El procesamiento de datos real se realiza de forma asíncrona. Las operaciones por lotes creadas hace más de 30 días ya no serán accesibles por el método GetOperation
.
Cada lote puede tener un máximo de 200 solicitudes .
Indicador de progreso de operación por lotes
La google.longrunning.operation
que se creó cuando se llamó al método de creación o actualización por lotes se encuentra en uno de los siguientes estados:
STATE_UNSPECIFIED (el valor predeterminado)
INICIALIZANDO
PROCESANDO
EXITOSA
ERROR
En el estado INICIALIZANDO, los campos success_count
, failure_count
y total_count
se establecen en 0. Si la operación está en estado PROCESANDO, success_count
y failure_count
pueden aumentar. En el estado EXITOSA, success_count
+ failure_count
siempre es igual a total_count
, y success_count
> 0. En el estado ERROR, success_count
siempre es 0.
Nota: Por el momento, solo el método GetOperation
solo es compatible con el recurso google.longrunning.operation
.
Crea trabajos por lotes
El siguiente ejemplo de código muestra cómo crear trabajos por lotes:
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))
Trabajos de actualización por lotes
El siguiente ejemplo de código muestra cómo actualizar trabajos por lotes:
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))
Realiza trabajos de eliminación por lotes.
En la siguiente muestra de código, se explica cómo borrar trabajos por lotes: