Mengelola operasi yang berjalan lama

Halaman ini menjelaskan cara mengelola siklus proses operasi jangka panjang (LRO) Cloud Healthcare API.

Jika metode API mungkin memerlukan waktu lama untuk diselesaikan, metode tersebut dapat menampilkan Operation ke klien. Klien dapat menggunakan antarmuka Operation untuk mengambil status metode API secara asinkron dengan melakukan polling operasi. LRO di Cloud Healthcare API mematuhi pola desain LRO Google Cloud.

Cloud Healthcare API membuat LRO untuk beberapa metode, seperti projects.locations.datasets.fhirStores.import. Saat projects.locations.datasets.fhirStores.import dipanggil, Cloud Healthcare API akan membuat LRO untuk melacak status impor. LRO memiliki ID unik yang dapat Anda gunakan untuk melihat status LRO.

LRO dikelola di tingkat set data. Jika memanggil metode yang menampilkan LRO, seperti projects.locations.datasets.fhirStores.import, Anda dapat melihat status LRO dengan mengirimkan permintaan yang berisi ID LRO ke set data induk penyimpanan FHIR tempat impor terjadi.

Selain REST API, sumber berikut menghasilkan operasi yang berjalan lama saat Anda memanggil metode yang tercantum dalam Metode yang menampilkan LRO:

Anda dapat mengelola LRO Cloud Healthcare API menggunakan konsol Google Cloud, Google Cloud CLI, atau REST API.

Data LRO disimpan selama sekitar 30 hari setelah LRO selesai, yang berarti Anda tidak dapat melihat atau mencantumkan LRO setelah titik tersebut.

Metode yang menampilkan LRO

Metode berikut menampilkan LRO.

Metode pengelolaan izin:

Metode set data:

Metode DICOM:

Metode FHIR:

Metode HL7v2:

Mendapatkan detail tentang LRO

Contoh berikut menunjukkan cara mendapatkan detail tentang LRO.

Versi Cloud Healthcare API yang ditampilkan dalam respons saat mendapatkan detail tentang LRO sama dengan versi API metode yang memulai LRO.

Konsol

Setelah memanggil metode menggunakan gcloud CLI atau API yang menampilkan LRO, Anda dapat melihat detail tentang LRO di konsol Google Cloud.

  1. Di konsol Google Cloud, buka halaman Datasets.

    Buka Set Data

  2. Klik nama set data yang berisi LRO yang ingin Anda lihat.

  3. Klik Operations.

  4. Untuk melihat log error operasi di Cloud Logging, klik Actions, lalu klik View details in Cloud Logging. Untuk mengetahui informasi selengkapnya, lihat Melihat log error di Cloud Logging.

  5. Untuk melihat detail selengkapnya tentang operasi, klik ID operasi yang sedang berjalan. Halaman Long-running Operation Details akan ditampilkan. Halaman ini menampilkan informasi berikut:

    • Progres LRO
    • Detail LRO, seperti ID operasi dan metode yang memanggil LRO
    • Sebagian entri log

gcloud

Misalkan Anda menerima respons berikut setelah memanggil gcloud healthcare dicom-stores deidentify:

Request issued for: [DATASET_ID]
Waiting for operation [OPERATION_ID] to complete...

Respons menunjukkan bahwa Cloud Healthcare API membuat LRO dengan ID operasi. Anda juga dapat mengambil ID operasi dengan mencantumkan operasi database yang berjalan lama. Perintah akan terus berjalan hingga selesai, lalu akan menampilkan output berikut:

Request issued for: [DATASET_ID]
Waiting for operation [OPERATION_ID] to complete...done
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID

Untuk mendapatkan detail tentang LRO, jalankan perintah gcloud healthcare operations describe.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • DATASET_ID: ID set data
  • LOCATION: lokasi set data
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud healthcare operations describe OPERATION_ID \
    --project=PROJECT_ID \
    --dataset=DATASET_ID \
    --location=LOCATION

Windows (PowerShell)

gcloud healthcare operations describe OPERATION_ID `
    --project=PROJECT_ID `
    --dataset=DATASET_ID `
    --location=LOCATION

Windows (cmd.exe)

gcloud healthcare operations describe OPERATION_ID ^
    --project=PROJECT_ID ^
    --dataset=DATASET_ID ^
    --location=LOCATION

Anda akan melihat respons seperti berikut:

Respons

done: true
// If there were any errors, an `error` field displays instead of a `response` field.
// See Troubleshooting long-running operations for a list of response codes.
error: ERROR
  code: ERROR_CODE
  message: DESCRIPTION
metadata:
  '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata'
  apiMethodName: 'google.cloud.healthcare.v1.deidentify.DeidentifyService.DeidentifyDicomStore'
  counter:
    success: 'SUCCESS_COUNT'
    // If there were any failures, they display in the `failure` field.
    failure: 'FAILURE_COUNT'
  createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
  endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
  logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
// The `response` field only displays if there were no errors.
response:
  '@type': 'type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary'

REST

Misalkan Anda menerima respons berikut setelah memanggil projects.locations.datasets.dicomStores.deidentify:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

Nilai name dalam respons menunjukkan bahwa Cloud Healthcare API membuat LRO bernama projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID. Anda juga dapat mengambil nama LRO dengan mencantumkan LRO.

Untuk mendapatkan status LRO, gunakan metode projects.locations.datasets.operations.get. Untuk melakukan polling LRO, panggil metode projects.locations.datasets.operations.get berulang kali hingga operasi selesai. Gunakan backoff di antara setiap permintaan polling, seperti 10 detik.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • DATASET_ID: ID set data
  • LOCATION: lokasi set data
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

APIs Explorer

Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.

Output-nya adalah sebagai berikut. Jika respons berisi "done": true, operasi yang berjalan lama telah selesai.

Mencantumkan LRO

Contoh berikut menunjukkan cara mencantumkan LRO dalam set data.

Konsol

Untuk melihat daftar semua LRO dalam set data di konsol Google Cloud, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Datasets.

    Buka Set Data

  2. Klik nama set data yang berisi LRO yang ingin Anda lihat.

  3. Klik Operations.

Daftar LRO dalam set data dan statusnya akan ditampilkan. Untuk melihat log error di Cloud Logging, klik ikon informasi selengkapnya di kolom terakhir, lalu klik Lihat detail di Cloud Logging. Untuk mengetahui informasi selengkapnya, lihat artikel Melihat log error di Cloud Logging.

gcloud

Untuk mencantumkan LRO dalam set data, jalankan perintah gcloud healthcare operations list.

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • DATASET_ID: ID set data
  • LOCATION: lokasi set data

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud healthcare operations list --dataset=DATASET_ID --location=LOCATION

Windows (PowerShell)

gcloud healthcare operations list --dataset=DATASET_ID --location=LOCATION

Windows (cmd.exe)

gcloud healthcare operations list --dataset=DATASET_ID --location=LOCATION

Anda akan melihat respons seperti berikut:

Respons

ID             LOCATION     DONE
OPERATION_ID   LOCATION {TRUE|FALSE}
...

REST

Untuk mencantumkan LRO dalam set data, gunakan metode projects.locations.datasets.operations.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • DATASET_ID: ID set data
  • LOCATION: lokasi set data

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations" | Select-Object -Expand Content

APIs Explorer

Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.

Anda akan melihat respons JSON seperti berikut:

Membatalkan LRO

Contoh berikut menunjukkan cara membatalkan LRO dalam set data.

Konsol

Untuk membatalkan LRO di konsol Google Cloud, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Datasets.

    Buka Set Data

  2. Klik nama set data yang berisi LRO yang ingin Anda lihat.

  3. Klik Operations.

  4. Di baris yang sama dengan LRO yang ingin Anda batalkan, buka daftar Tindakan, lalu klik Hentikan Operasi.

REST

Untuk membatalkan LRO, gunakan metode projects.locations.datasets.operations.cancel.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • DATASET_ID: ID set data
  • LOCATION: lokasi set data
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID:cancel"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID:cancel" | Select-Object -Expand Content

APIs Explorer

Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.

Anda akan melihat respons JSON seperti berikut:

Untuk melihat status permintaan pembatalan, gunakan metode projects.locations.datasets.operations.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • DATASET_ID: ID set data
  • LOCATION: lokasi set data
  • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

PowerShell

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

APIs Explorer

Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.

Anda akan melihat respons JSON seperti berikut:

Membatalkan beberapa LRO

Untuk membatalkan beberapa LRO, selesaikan langkah-langkah berikut:

  1. Panggil metode operations.list untuk mendapatkan nama operasi dalam set data.
  2. Panggil metode operations.cancel pada setiap operasi.

Google menyediakan skrip Python yang dapat Anda gunakan untuk membatalkan semua operasi untuk set data tertentu.

Memecahkan masalah LRO

Jika LRO gagal, responsnya akan menyertakan kode error Google Cloud kanonis. Tabel berikut memberikan penjelasan tentang penyebab setiap kode dan rekomendasi untuk cara menangani kode tersebut. Untuk banyak error, tindakan yang direkomendasikan adalah mencoba permintaan lagi menggunakan backoff eksponensial. Untuk informasi tentang cara menerapkan backoff eksponensial di Cloud Healthcare API, lihat Mencoba kembali permintaan yang gagal.

Kode Enum Deskripsi Tindakan yang disarankan
1 CANCELLED Operasi dibatalkan, biasanya oleh pemanggil. Jalankan kembali operasi jika diinginkan.
2 UNKNOWN Error ini mungkin ditampilkan jika nilai Status yang diterima dari ruang alamat lain berada di ruang error yang tidak diketahui di ruang alamat ini. Jika error API tidak menampilkan informasi yang memadai, error tersebut dapat dikonversi menjadi error ini. Coba lagi dengan backoff eksponensial.
3 INVALID_ARGUMENT Klien menetapkan argumen yang tidak valid. Error ini berbeda dengan FAILED_PRECONDITION. INVALID_ARGUMENT menunjukkan argumen yang bermasalah, terlepas dari statusnya di dalam sistem, seperti nama file yang salah format. Jangan mencoba lagi tanpa memperbaiki masalah.
4 DEADLINE_EXCEEDED Batas waktu berakhir sebelum operasi selesai. Untuk operasi yang mengubah status sistem, error ini mungkin ditampilkan, meskipun operasi tersebut telah selesai. Sebagai contoh, respons berhasil dari suatu server dapat tertunda selama waktu yang cukup lama hingga tenggat waktu berakhir. Coba lagi dengan backoff eksponensial.
5 NOT_FOUND Beberapa entity yang diminta, seperti resource FHIR, tidak ditemukan. Jangan mencoba lagi tanpa memperbaiki masalah.
6 ALREADY_EXISTS Entitas yang coba dibuat oleh klien, seperti instance DICOM, sudah ada. Jangan mencoba lagi tanpa memperbaiki masalah.
7 PERMISSION_DENIED Pemanggil tidak memiliki izin untuk menjalankan operasi yang ditentukan. Kode error ini tidak menyatakan bahwa suatu permintaan valid atau entitas yang diminta ada atau memenuhi prakondisi lainnya. Jangan mencoba lagi tanpa memperbaiki masalah.
8 RESOURCE_EXHAUSTED Beberapa resource telah habis, seperti kuota per project. Lihat Praktik terbaik untuk pengelolaan kuota guna mengetahui tindakan yang direkomendasikan. Coba lagi dengan backoff eksponensial. Kuota mungkin tersedia dari waktu ke waktu.
9 FAILED_PRECONDITION Operasi tersebut ditolak karena sistem tidak dalam keadaan dibutuhkan untuk menjalankan operasi. Misalnya, direktori yang akan dihapus tidak kosong, atau operasi rmdir diterapkan pada non-direktori. Jangan mencoba lagi tanpa memperbaiki masalah.
10 ABORTED Operasi dibatalkan, umumnya karena masalah konkurensi seperti kegagalan pemeriksaan pengurut atau pembatalan transaksi. Coba lagi dengan backoff eksponensial.
11 OUT_OF_RANGE Upaya operasi dilakukan melampaui rentang yang valid, seperti mencari atau membaca melampaui akhir file. Tidak seperti INVALID_ARGUMENT, error ini menunjukkan masalah yang dapat diperbaiki jika status sistem berubah. Jangan mencoba lagi tanpa memperbaiki masalah.
12 UNIMPLEMENTED Operasi tidak diterapkan atau tidak didukung/diaktifkan di Cloud Healthcare API. Jangan coba lagi.
13 INTERNAL Error internal. Pesan ini menunjukkan bahwa terjadi error tak terduga dalam pemrosesan pada sistem pokok. Coba lagi dengan backoff eksponensial.
14 UNAVAILABLE Cloud Healthcare API saat ini tidak tersedia. Kemungkinan besar ini hanya kondisi sementara, yang dapat diperbaiki dengan mencoba kembali menggunakan backoff. Perlu diketahui bahwa mencoba kembali operasi non-idempoten tidak selalu aman. Coba lagi dengan backoff eksponensial.
15 DATA_LOSS Data hilang atau rusak yang tidak dapat dipulihkan. Hubungi administrator sistem Anda. Administrator sistem mungkin ingin menghubungi perwakilan dukungan jika terjadi kehilangan atau kerusakan data.
16 UNAUTHENTICATED Permintaan tidak memiliki kredensial autentikasi operasi yang valid. Jangan mencoba lagi tanpa memperbaiki masalah.