Lange laufende Vorgänge verwalten

Auf dieser Seite wird beschrieben, wie Sie den Lebenszyklus eines lang laufenden Vorgangs (Long-Running Operation, LRO) der Cloud Healthcare API verwalten.

Wenn eine API-Methode sehr lange dauern kann, kann sie dem Client einen Operation zurückgeben. Der Client kann den Status der API-Methode asynchron abrufen, indem er den Vorgang abfragt.Operation LROs in der Cloud Healthcare API entsprechen dem Google Cloud-Designmuster für LROs.

Die Cloud Healthcare API erstellt LROs für mehrere Methoden, z. B. projects.locations.datasets.fhirStores.import. Wenn projects.locations.datasets.fhirStores.import aufgerufen wird, erstellt die Cloud Healthcare API einen LRO, um den Importstatus zu verfolgen. Der LRO hat eine eindeutige Kennung, mit der Sie den Status des LRO abrufen können.

LROs werden auf Dataset-Ebene verwaltet. Wenn Sie eine Methode aufrufen, die einen LRO zurückgibt, z. B. projects.locations.datasets.fhirStores.import, können Sie den Status des LRO einsehen, indem Sie eine Anfrage mit der LRO-ID an das übergeordnete Dataset des FHIR-Speichers senden, in dem der Import stattfindet.

Zusätzlich zur REST API generieren die folgenden Quellen Vorgänge mit langer Ausführungszeit, wenn Sie die unter Methoden, die einen Vorgang mit langer Ausführungszeit zurückgeben aufgeführten Methoden aufrufen:

Sie können Ihre Cloud Healthcare API-LROs über die Google Cloud Console, die Google Cloud CLI oder die REST API verwalten.

Der Datensatz eines LRO wird für etwa 30 Tage gespeichert, nachdem der LRO abgeschlossen wurde. Dies bedeutet, dass Sie nach diesem Zeitpunkt den LRO nicht mehr aufrufen oder auflisten können.

Methoden, die einen LRO zurückgeben

Die folgenden Methoden geben einen LRO zurück.

Methoden zur Einwilligungsverwaltung:

Dataset-Methoden:

DICOM-Methoden:

FHIR-Methoden:

HL7v2-Methoden:

Details zu einem LRO abrufen

Die folgenden Beispiele zeigen, wie Sie Details zu einem LRO erhalten.

Die Version der Cloud Healthcare API in der Antwort beim Abrufen von Details zu einem LRO stimmt mit der API-Version der Methode überein, die den LRO initiiert hat.

Console

Nachdem Sie eine Methode mithilfe der gcloud CLI oder der API aufgerufen haben, die eine LRO zurückgibt, können Sie in der Google Cloud Console Details zur LRO anzeigen.

  1. Rufen Sie in der Google Cloud Console die Seite Datasets auf.

    Zu Datasets

  2. Klicken Sie auf den Namen des Datasets mit dem Vorgang mit langer Ausführungszeit, den Sie anzeigen möchten.

  3. Klicken Sie auf Vorgänge.

  4. Zum Aufrufen von Fehlerlogs für den Vorgang in Cloud Logging klicken Sie auf Aktionen und dann auf Details in Cloud Logging anzeigen. Weitere Informationen finden Sie unter Fehlerlogs in Cloud Logging ansehen.

  5. Klicken Sie auf die ID eines Vorgangs, der gerade ausgeführt wird, um weitere Details dazu aufzurufen. Die Seite Details zu Vorgängen mit langer Ausführungszeit wird angezeigt. Auf der Seite werden die folgenden Informationen angezeigt:

    • Der Fortschritt der LRO
    • Details zum LRO, z. B. die Vorgangs-ID und die Methode, mit der der LRO aufgerufen wurde
    • Einen Teil der Logeinträge

gcloud

Angenommen, Sie erhalten nach dem Aufruf von gcloud healthcare dicom-stores deidentify die folgende Antwort:

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

Die Antwort zeigt, dass die Cloud Healthcare API einen LRO mit einer Vorgangs-ID erstellt hat. Sie können die Vorgangs-ID auch abrufen, indem Sie lange laufende Datenbankvorgänge auflisten. Der Befehl wird so lange ausgeführt, bis er abgeschlossen ist. Dann gibt er Folgendes aus:

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

Führen Sie den Befehl gcloud healthcare operations describe aus, um Details zum LRO abzurufen.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • PROJECT_ID: die ID Ihres Google Cloud-Projekts
  • DATASET_ID: die Dataset-ID
  • LOCATION: der Standort des Datasets
  • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

Führen Sie folgenden Befehl aus:

Linux, macOS oder 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

Sie sollten eine Antwort ähnlich der folgenden erhalten:

Antwort

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

Angenommen, Sie erhalten nach dem Aufruf von projects.locations.datasets.dicomStores.deidentify die folgende Antwort:

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

Der Wert name in der Antwort zeigt, dass die Cloud Healthcare API eine LRO mit dem Namen projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID erstellt hat. Sie können den Namen des LRO auch abrufen, indem Sie LROs auflisten.

Mit der Methode projects.locations.datasets.operations.get können Sie den Status des LRO abrufen. Für die Abfrage eines LRO rufen Sie die Methode projects.locations.datasets.operations.get wiederholt auf, bis der Vorgang abgeschlossen ist. Verwenden Sie einen Backoff zwischen den Abfrageanfragen, z. B. 10 Sekunden.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID Ihres Google Cloud-Projekts
  • DATASET_ID: die Dataset-ID
  • LOCATION: der Standort des Datasets
  • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der lang andauernde Vorgang abgeschlossen.

LROs auflisten

Die folgenden Beispiele zeigen, wie Sie LROs in einem Dataset auflisten.

Console

So rufen Sie in der Google Cloud Console eine Liste aller LROs in einem Datensatz auf:

  1. Rufen Sie in der Google Cloud Console die Seite Datasets auf.

    Zu Datasets

  2. Klicken Sie auf den Namen des Datasets mit dem Vorgang mit langer Ausführungszeit, den Sie anzeigen möchten.

  3. Klicken Sie auf Vorgänge.

Eine Liste der LROs im Dataset und deren Status wird angezeigt. Zur Anzeige der Fehlerlogs in Cloud Logging klicken Sie in der letzten Spalte auf das Symbol für weitere Informationen und dann auf Details in Cloud Logging ansehen. Weitere Informationen finden Sie unter Fehlerlogs in Cloud Logging ansehen.

gcloud

Zum Auflisten der LROs in einem Dataset führen Sie den Befehl gcloud healthcare operations list aus.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • DATASET_ID ist die Dataset-ID
  • LOCATION ist der Standort des Datasets

Führen Sie folgenden Befehl aus:

Linux, macOS oder 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

Sie sollten eine Antwort ähnlich der folgenden erhalten:

Antwort

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

REST

Verwenden Sie die Methode projects.locations.datasets.operations.get, um die LROs in einem Dataset aufzulisten.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID Ihres Google Cloud-Projekts
  • DATASET_ID: die Dataset-ID
  • LOCATION ist der Standort des Datasets

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

LRO abbrechen

Die folgenden Beispiele zeigen, wie ein LRO in einem Dataset abgebrochen wird.

Console

So kündigen Sie eine LRO in der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite Datasets auf.

    Zu Datasets

  2. Klicken Sie auf den Namen des Datasets mit dem Vorgang mit langer Ausführungszeit, den Sie anzeigen möchten.

  3. Klicken Sie auf Vorgänge.

  4. Öffnen Sie in derselben Zeile wie die LRO, die Sie abbrechen möchten, die Liste Aktionen und klicken Sie auf Vorgang beenden.

REST

Verwenden Sie die Methode projects.locations.datasets.operations.cancel, um einen LRO abzubrechen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID Ihres Google Cloud-Projekts
  • DATASET_ID: die Dataset-ID
  • LOCATION: der Standort des Datasets
  • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Verwenden Sie die Methode projects.locations.datasets.operations.get, um den Status der Stornierungsanfrage aufzurufen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID Ihres Google Cloud-Projekts
  • DATASET_ID: die Dataset-ID
  • LOCATION: der Standort des Datasets
  • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Mehrere LROs abbrechen

So brechen Sie mehrere LROs ab:

  1. Rufen Sie die Methode operations.list auf, um die Namen der Vorgänge in einem Dataset abzurufen.
  2. Rufen Sie bei jedem Vorgang die Methode operations.cancel auf.

Google stellt ein Python-Script bereit, mit dem Sie alle Vorgänge für einen bestimmten Datensatz abbrechen können.

Fehlerbehebung bei LROs

Wenn ein LRO fehlschlägt, enthält die Antwort einen kanonischen Google Cloud-Fehlercode. In der folgenden Tabelle wird die Ursache der einzelnen Codes erläutert und es wird empfohlen, wie Sie damit umgehen sollten. Bei vielen Fehlern wird empfohlen, die Anfrage mit exponentiellem Backoff noch einmal auszuführen. Informationen zum Implementieren eines exponentiellen Backoffs in der Cloud Healthcare API finden Sie unter Fehlgeschlagene Anfragen wiederholen.

Code Enum Beschreibung Empfohlene Maßnahmen
1 CANCELLED Der Vorgang wurde abgebrochen, üblicherweise vom Aufrufer. Wiederholen Sie den Vorgang bei Bedarf.
2 UNKNOWN Dieser Fehler wird möglicherweise zurückgegeben, wenn ein Status-Wert, der von einem anderen Adressbereich empfangen wurde, zu einem Fehlerbereich gehört, der in diesem Adressbereich nicht bekannt ist. Wenn der Fehler einer API nicht genügend Informationen zurückgibt, wird er möglicherweise in diesen Fehler konvertiert. Wiederholen Sie den Vorgang mit exponentiellem Backoff.
3 INVALID_ARGUMENT Der Client hat ein ungültiges Argument angegeben. Dieser Fehler unterscheidet sich von FAILED_PRECONDITION. INVALID_ARGUMENT gibt Argumente an, die ungeachtet des Systemstatus problematisch sind (z. B. ein ungültiger Dateiname). Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist.
4 DEADLINE_EXCEEDED Die Frist ist abgelaufen, bevor der Vorgang abgeschlossen werden konnte. Bei Vorgängen, die den Systemstatus verändern, kann dieser Fehler angezeigt werden, auch wenn der Vorgang erfolgreich abgeschlossen wurde. Zum Beispiel könnte eine erfolgreiche Antwort von einem Server so lange verzögert worden sein, dass die Frist abgelaufen ist. Wiederholen Sie den Vorgang mit exponentiellem Backoff.
5 NOT_FOUND Eine angeforderte Entität, z. B. eine FHIR-Ressource, wurde nicht gefunden. Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist.
6 ALREADY_EXISTS Die Entität, die ein Client erstellen wollte, z. B. eine DICOM-Instanz, ist bereits vorhanden. Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist.
7 PERMISSION_DENIED Der Aufrufer hat keine Berechtigung zur Ausführung des angegebenen Vorgangs. Dieser Fehlercode impliziert nicht, dass die Anfrage gültig ist oder die angefragte Entität existiert oder andere Vorbedingungen erfüllt. Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist.
8 RESOURCE_EXHAUSTED Eine Ressource ist aufgebraucht, z. B. ein pro Projekt festgelegtes Kontingent. Unter Best Practices für die Kontingentverwaltung finden Sie empfohlene Maßnahmen. Wiederholen Sie den Vorgang mit exponentiellem Backoff. Möglicherweise wird das Kontingent im Laufe der Zeit verfügbar.
9 FAILED_PRECONDITION Der Vorgang wurde abgelehnt, weil der Systemzustand nicht für die Ausführung des Vorgangs geeignet ist. Beispiel: Das zu löschende Verzeichnis ist nicht leer oder ein rmdir-Vorgang wird auf ein Nicht-Verzeichnis angewendet. Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist.
10 ABORTED Der Vorgang wurde abgebrochen, in der Regel aufgrund eines Parallelitätsproblems wie einer fehlgeschlagenen Sequencer-Überprüfung oder einer abgebrochenen Transaktion. Wiederholen Sie den Vorgang mit exponentiellem Backoff.
11 OUT_OF_RANGE Beim Vorgang wurde versucht, den gültigen Bereich zu überschreiten, z. B. bei einer Such- oder Leseaktion hinter dem Dateiende. Im Gegensatz zu INVALID_ARGUMENT zeigt dieser Fehler ein Problem an, das behoben werden kann, wenn sich der Systemstatus ändert. Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist.
12 UNIMPLEMENTED Dieser Vorgang ist nicht implementiert oder wird in der Cloud Healthcare API nicht unterstützt bzw. ist in der Cloud Healthcare API nicht aktiviert. Wiederholen Sie den Vorgang nicht.
13 INTERNAL Interne Fehler. Dies weist darauf hin, dass bei der Verarbeitung des zugrunde liegenden Systems ein unerwarteter Fehler aufgetreten ist. Wiederholen Sie den Vorgang mit exponentiellem Backoff.
14 UNAVAILABLE Die Cloud Healthcare API ist derzeit nicht verfügbar. Dies ist höchstwahrscheinlich ein vorübergehender Zustand, der durch Wiederholen mit einem Backoff korrigiert werden kann. Es ist nicht immer sicher, nicht idempotente Vorgänge zu wiederholen. Wiederholen Sie den Vorgang mit exponentiellem Backoff.
15 DATA_LOSS Dauerhafter Datenverlust oder Datenkorruption. Wenden Sie sich an Ihren Systemadministrator. Der Systemadministrator sollte sich an einen Supportmitarbeiter wenden, wenn Daten verloren gegangen sind oder beschädigt wurden.
16 UNAUTHENTICATED Die Anfrage enthält keine gültigen Authentifizierungsdaten für diesen Vorgang. Wiederholen Sie den Vorgang nur, wenn das Problem behoben ist.