Operasi batch

Cloud Talent Solution mendukung operasi batch asinkron, yang memungkinkan Anda menempatkan beberapa panggilan API ke dalam satu permintaan HTTP. Jenis respons yang ditampilkan adalah google.longrunning.operation. Status mendetail operasi batch dapat diambil dengan memanggil metode GetOperation menggunakan kolom name di google.longrunning.operation.

Penggunaan batching akan mengurangi latensi dalam waktu respons API dan meningkatkan throughput. Perhatikan bahwa penerimaan respons API batch yang berhasil hanya menunjukkan bahwa permintaan batch telah dibuat. Pemrosesan data sebenarnya dilakukan secara asinkron. Operasi batch yang dibuat lebih dari 30 hari yang lalu tidak akan dapat diakses lagi oleh metode GetOperation.

Setiap batch dibatasi hingga 200 permintaan.

Indikator progres operasi batch

google.longrunning.operation yang dibuat dengan memanggil metode pembuatan atau pembaruan batch termasuk dalam salah satu status berikut:

  • STATE_UNSPECIFIED (nilai default)
  • INITIALIZING
  • PROCESSING
  • SUCCEEDED (BERHASIL)
  • GAGAL

Dalam status INITIALIZING, kolom success_count, failure_count, dan total_count ditetapkan ke 0. Jika operasi dalam status PROCESSING, success_count dan failure_count dapat meningkat. Dalam status SUCCEEDED, success_count + failure_count selalu sama dengan total_count, dan success_count > 0. Dalam status FAILED, success_count selalu 0.

Membuat tugas batch

Contoh kode berikut menunjukkan cara membuat tugas batch:

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk CTS, lihat Library klien CTS. Untuk mengetahui informasi selengkapnya, lihat CTS Python API dokumentasi referensi.

Untuk melakukan autentikasi ke CTS, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


from google.cloud import talent


def 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.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, bytes):
        project_id = project_id.decode("utf-8")
    if isinstance(tenant_id, bytes):
        tenant_id = tenant_id.decode("utf-8")
    if isinstance(company_name_one, bytes):
        company_name_one = company_name_one.decode("utf-8")
    if isinstance(requisition_id_one, bytes):
        requisition_id_one = requisition_id_one.decode("utf-8")
    if isinstance(title_one, bytes):
        title_one = title_one.decode("utf-8")
    if isinstance(description_one, bytes):
        description_one = description_one.decode("utf-8")
    if isinstance(job_application_url_one, bytes):
        job_application_url_one = job_application_url_one.decode("utf-8")
    if isinstance(address_one, bytes):
        address_one = address_one.decode("utf-8")
    if isinstance(language_code_one, bytes):
        language_code_one = language_code_one.decode("utf-8")
    if isinstance(company_name_two, bytes):
        company_name_two = company_name_two.decode("utf-8")
    if isinstance(requisition_id_two, bytes):
        requisition_id_two = requisition_id_two.decode("utf-8")
    if isinstance(title_two, bytes):
        title_two = title_two.decode("utf-8")
    if isinstance(description_two, bytes):
        description_two = description_two.decode("utf-8")
    if isinstance(job_application_url_two, bytes):
        job_application_url_two = job_application_url_two.decode("utf-8")
    if isinstance(address_two, bytes):
        address_two = address_two.decode("utf-8")
    if isinstance(language_code_two, bytes):
        language_code_two = language_code_two.decode("utf-8")
    parent = f"projects/{project_id}/tenants/{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=parent, jobs=jobs)

    print("Waiting for operation to complete...")
    response = operation.result(90)

    print(f"Batch response: {response}")

Memperbarui tugas batch

Contoh kode berikut menunjukkan cara memperbarui tugas batch:

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk CTS, lihat Library klien CTS. Untuk mengetahui informasi selengkapnya, lihat CTS Python API dokumentasi referensi.

Untuk melakukan autentikasi ke CTS, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


from google.cloud import talent


def 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.JobServiceClient()

    # project_id = 'Your Google Cloud Project ID'
    # tenant_id = 'Your Tenant ID (using tenancy is optional)'
    # job_name_one = 'job name, 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, 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, bytes):
        project_id = project_id.decode("utf-8")
    if isinstance(tenant_id, bytes):
        tenant_id = tenant_id.decode("utf-8")
    if isinstance(job_name_one, bytes):
        job_name_one = job_name_one.decode("utf-8")
    if isinstance(company_name_one, bytes):
        company_name_one = company_name_one.decode("utf-8")
    if isinstance(requisition_id_one, bytes):
        requisition_id_one = requisition_id_one.decode("utf-8")
    if isinstance(title_one, bytes):
        title_one = title_one.decode("utf-8")
    if isinstance(description_one, bytes):
        description_one = description_one.decode("utf-8")
    if isinstance(job_application_url_one, bytes):
        job_application_url_one = job_application_url_one.decode("utf-8")
    if isinstance(address_one, bytes):
        address_one = address_one.decode("utf-8")
    if isinstance(language_code_one, bytes):
        language_code_one = language_code_one.decode("utf-8")
    if isinstance(job_name_two, bytes):
        job_name_two = job_name_two.decode("utf-8")
    if isinstance(company_name_two, bytes):
        company_name_two = company_name_two.decode("utf-8")
    if isinstance(requisition_id_two, bytes):
        requisition_id_two = requisition_id_two.decode("utf-8")
    if isinstance(title_two, bytes):
        title_two = title_two.decode("utf-8")
    if isinstance(description_two, bytes):
        description_two = description_two.decode("utf-8")
    if isinstance(job_application_url_two, bytes):
        job_application_url_two = job_application_url_two.decode("utf-8")
    if isinstance(address_two, bytes):
        address_two = address_two.decode("utf-8")
    if isinstance(language_code_two, bytes):
        language_code_two = language_code_two.decode("utf-8")
    parent = f"projects/{project_id}/tenants/{tenant_id}"
    uris = [job_application_url_one]
    application_info = {"uris": uris}
    addresses = [address_one]
    jobs_element = talent.Job(
        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 = talent.Job(
        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=parent, jobs=jobs)

    print("Waiting for operation to complete...")
    response = operation.result(90)

    print(f"Batch response: {response}")

Menghapus tugas batch

Contoh kode berikut menunjukkan cara menghapus tugas batch:

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk CTS, lihat Library klien CTS. Untuk mengetahui informasi selengkapnya, lihat CTS Node.js API dokumentasi referensi.

Untuk melakukan autentikasi ke CTS, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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');
}