Strategie für Wiederholungen

Auf dieser Seite wird beschrieben, wie Cloud Storage-Tools fehlgeschlagene Anfragen wiederholen und wie Sie das Verhalten von Wiederholungsversuchen anpassen. Außerdem werden Überlegungen zur Wiederholung von Anfragen beschrieben.

Übersicht

Es gibt zwei Faktoren, die bestimmen, ob eine Anfrage sicher wiederholt werden kann:

  • Die Antwort, die Sie von der Anfrage erhalten.

  • Die Idempotenz der Anfrage.

Antwort

Die Antwort, die Sie von Ihrer Anfrage erhalten, gibt an, ob es sinnvoll ist, die Anfrage zu wiederholen. Antworten in Bezug auf vorübergehende Probleme sind in der Regel wiederholbar. Andererseits weisen Antworten in Bezug auf dauerhafte Probleme darauf hin, dass Sie Änderungen vornehmen müssen, z. B. Autorisierungs- oder Konfigurationsänderungen, bevor es sinnvoll ist, die Anfrage noch einmal zu senden. Die folgenden Antworten weisen auf vorübergehende Probleme hin, bei denen eine Wiederholung sinnvoll ist:

  • HTTP-Antwortcodes 408, 429 und 5xx
  • Socket-Zeitlimits und getrennte TCP-Verbindungen

Weitere Informationen finden Sie in den Status- und Fehlercodes für JSON und XML.

Idempotenz

Idempotente Anfragen können wiederholt ausgeführt werden, ohne den Endzustand der Zielressource zu ändern. Das Ergebnis ist jedes Mal derselbe Endzustand. Zum Beispiel sind list-Vorgänge immer idempotent, weil solche Anfragen keine Ressourcen ändern. Andererseits ist das Erstellen einer neuen Pub/Sub-Benachrichtigung niemals idempotent, da bei jeder erfolgreichen Anfrage eine neue Benachrichtigungs-ID erstellt wird.

Die folgenden Beispiele zeigen Bedingungen, die einen Vorgang idempotent machen:

  • Der Vorgang hat auch dann sichtbare Auswirkungen auf die Zielressource, wenn er kontinuierlich angefragt wird.

  • Der Vorgang ist nur einmal erfolgreich.

  • Der Vorgang hat keine sichtbaren Auswirkungen auf den Status der Zielressource.

Wenn Sie eine wiederholbare Antwort erhalten, sollten Sie die Idempotenz der Anfrage berücksichtigen, da das Wiederholen von Anfragen, die nicht idempotent sind, zu Race-Bedingungen und anderen Konflikten führen kann.

Bedingte Idempotenz

Teilmengen von Anfragen sind bedingt idempotent. Das bedeutet, dass sie nur idempotent sind, wenn sie bestimmte optionale Argumente enthalten. Vorgänge, für die eine Wiederholung bedingt sicher ist, sollten nur dann wiederholt werden, wenn der Bedingungsfall erfolgreich ist. Cloud Storage akzeptiert Vorbedingungen und ETags als Bedingungsfälle für Anfragen.

Idempotenz von Vorgängen

In der folgenden Tabelle sind die Cloud Storage-Vorgänge aufgeführt, die unter die einzelnen Kategorien der Idempotenz fallen.

Idempotenz Vorgänge
Immer idempotent
  • Alle get- und list-Anfragen
  • Buckets einfügen oder löschen
  • IAM-Richtlinien und -Berechtigungen für Test-Buckets
  • Aufbewahrungsrichtlinien sperren
  • HMAC-Schlüssel oder Pub/Sub-Benachrichtigung löschen
Bedingt idempotent
  • Aktualisierungs-/Patch-Anfragen für Buckets mit IfMetagenerationMatch1 oder etag1 als HTTP-Vorbedingung
  • Aktualisierungs-/Patch-Anfragen für Objekte mit IfMetagenerationMatch1 oder etag1 als HTTP-Vorbedingung
  • Bucket-IAM-Richtlinie mit etag1 als HTTP-Vorbedingung oder im Ressourcentext festlegen
  • HMAC-Schlüssel mit etag1 als HTTP-Vorbedingung oder im Ressourcentext aktualisieren
  • Mit ifGenerationMatch1 Objekte einfügen, kopieren, verfassen oder neu schreiben
  • Objekt mit ifGenerationMatch1 (oder mit einer Generationsnummer für Objektversionen) löschen
Nie idempotent
  • HMAC-Schlüssel erstellen
  • Pub/Sub-Benachrichtigung erstellen
  • Patch-/Aktualisierungsanfragen für Bucket- und Objekt-ACLs oder Standard-Objekt-ACLs erstellen, löschen oder senden

1Dieses Feld kann in der JSON API verwendet werden. Informationen zu Feldern, die in den Clientbibliotheken verwendet werden können, finden Sie in der entsprechenden Dokumentation zur Clientbibliothek.

Wie Cloud Storage-Tools Wiederholungsstrategien implementieren

Console

Die Google Cloud Console sendet in Ihrem Namen Anfragen an Cloud Storage und sorgt für die Bearbeitung aller erforderlichen Backoffs.

Befehlszeile

gcloud storage-Befehle wiederholen die Fehler, die im Abschnitt Antwort aufgeführt sind, ohne dass Sie zusätzliche Maßnahmen ergreifen müssen. Etwa bei den folgenden Fehlern müssen Sie unter Umständen Maßnahmen ergreifen:

  • Ungültige Anmeldedaten oder unzureichende Berechtigungen.

  • Das Netzwerk ist nicht erreichbar, da Probleme mit der Proxykonfiguration aufgetreten sind.

Bei wiederholbaren Fehlern wiederholt die gcloud CLI Anfragen mithilfe einer Strategie eines abgeschnittenen binären exponentiellen Backoffs: Die Standardanzahl maximaler Wiederholungsversuche beträgt 32 für die gcloud CLI.

Clientbibliotheken

C++

Standardmäßig unterstützen die Vorgänge Wiederholungsversuche für die folgenden HTTP-Fehlercodes sowie für alle Socket-Fehler, die darauf hinweisen, dass die Verbindung verloren gegangen ist oder nie erfolgreich hergestellt wurde.

  • 408 Request Timeout
  • 429 Too Many Requests
  • 500 Internal Server Error
  • 502 Bad Gateway
  • 503 Service Unavailable
  • 504 Gateway Timeout

Alle Einstellungen für exponentiellen Backoff und Wiederholungsversuche in der C++-Bibliothek sind konfigurierbar. Wenn die in der Bibliothek implementierten Algorithmen Ihre Anforderungen nicht unterstützen, können Sie benutzerdefinierten Code bereitstellen, um Ihre eigenen Strategien zu implementieren.

Einstellung Standardwert
Automatische Wiederholung Wahr
Maximale Dauer, die eine Anfrage wiederholt wird 15 Minuten
Erste Wartezeit (Backoff) 1 Sekunde
Multiplikator für die Wartezeit pro Iteration 2
Maximale Wartezeit 5 Minuten

Standardmäßig wiederholt die C++-Bibliothek alle Vorgänge mit wiederholbaren Fehlern, auch solche, die nie idempotent sind und bei erfolgreicher Wiederholung mehrere Ressourcen löschen oder erstellen können. Wenn Sie nur idempotente Vorgänge wiederholen möchten, verwenden Sie die google::cloud::storage::StrictIdempotencyPolicy-Klasse.

C#

In der C#-Clientbibliothek wird exponentieller Backoff standardmäßig verwendet.

Go

Standardmäßig unterstützen Vorgänge Wiederholungsversuche für die folgenden Fehler:

  • Verbindungsfehler:
    • io.ErrUnexpectedEOF: Dies kann aufgrund vorübergehender Netzwerkprobleme auftreten.
    • url.Error mit connection refused: Dies kann aufgrund vorübergehender Netzwerkprobleme auftreten.
    • url.Error mit connection reset by peer: Dies bedeutet, dass Google Cloud die Verbindung zurückgesetzt hat.
    • net.ErrClosed: Dies bedeutet, dass Google Cloud die Verbindung beendet hat.
  • HTTP-Codes:
    • 408 Request Timeout
    • 429 Too Many Requests
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout
  • Fehler, die die Schnittstelle Temporary() implementieren und den Wert err.Temporary() == true angeben
  • Alle oben genannten Fehler, die mit Go 1.13-Fehlerverpackung verpackt wurden

Alle Einstellungen für exponentiellen Backoff in der Go-Bibliothek können konfiguriert werden. Standardmäßig verwenden Vorgänge in Go die folgenden Einstellungen für den exponentiellen Backoff (Standardeinstellungen werden von gax übernommen):

Einstellung Standardwert (in Sekunden)
Automatische Wiederholung Wahr, wenn idempotent
Maximale Anzahl an Versuchen Kein Limit
Verzögerung für erste Wiederholung: 1 Sekunde
Verzögerungsmultiplikator der Wiederholung 2,0
Maximale Wiederholungsverzögerung 30 Sekunden
Gesamtzeitlimit (fortsetzbarer Uploadblock) 32 Sekunden
Gesamtzeitlimit (alle anderen Vorgänge) Kein Limit

Der Wiederholungsversuch wird in der Regel unbegrenzt fortgesetzt, es sei denn, der Steuerungskontext wird abgebrochen, der Client wird geschlossen oder ein nicht vorübergehender Fehler wird empfangen. Verwenden Sie Kontextzeitlimits oder einen Abbruch, um zu verhindern, dass Wiederholungsversuche fortgesetzt werden. Die einzige Ausnahme bei diesem Verhalten ist, wenn fortsetzbare Uploads mit Writer durchgeführt werden, wobei die Daten groß genug sind, dass mehrere Anfragen erforderlich sind. In diesem Szenario tritt bei jedem Block eine Zeitüberschreitung auf und beendet die Wiederholung standardmäßig nach 32 Sekunden. Sie können das Standardzeitlimit anpassen, indem Sie Writer.ChunkRetryDeadline ändern.

Es gibt eine Teilmenge von Go-Vorgängen, die bedingt idempotent sind (bedingt sicher wiederholbar). Diese Vorgänge werden nur dann wiederholt, wenn sie bestimmte Bedingungen erfüllen:

  • GenerationMatch oder Generation

    • Sicher wiederholbar, wenn die Vorbedingung GenerationMatch auf den Aufruf angewendet wurde oder wenn ObjectHandle.Generation festgelegt wurde.
  • MetagenerationMatch

    • Sicher wiederholbar, wenn die Vorbedingung MetagenerationMatch auf den Aufruf angewendet wurde.
  • Etag

    • Sicher wiederholbar, wenn die Methode ein etag in den JSON-Anfragetext einfügt. Wird nur in HMACKeyHandle.Update verwendet, wenn HmacKeyMetadata.Etag festgelegt wurde.

RetryPolicy ist standardmäßig auf RetryPolicy.RetryIdempotent festgelegt. Unter Wiederholungen anpassen finden Sie Beispiele zum Ändern des Standardverhaltens bei Wiederholungsversuchen.

Java

Standardmäßig unterstützen Vorgänge Wiederholungsversuche für die folgenden Fehler:

  • Verbindungsfehler:
    • Connection reset by peer: Dies bedeutet, dass Google Cloud die Verbindung zurückgesetzt hat.
    • Unexpected connection closure: Dies bedeutet, dass Google Cloud die Verbindung beendet hat.
  • HTTP-Codes:
    • 408 Request Timeout
    • 429 Too Many Requests
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout

Alle Einstellungen für exponentiellen Backoff in der Java-Bibliothek können konfiguriert werden. Standardmäßig verwenden Vorgänge über Java für den exponentiellen Backoff die folgenden Einstellungen:

Einstellung Standardwert (in Sekunden)
Automatische Wiederholung Wahr, wenn idempotent
Maximale Anzahl an Versuchen 6
Verzögerung für erste Wiederholung: 1 Sekunde
Verzögerungsmultiplikator der Wiederholung 2,0
Maximale Wiederholungsverzögerung 32 Sekunden
Zeitlimit insgesamt 50 Sekunden
Anfängliches RPC-Zeitlimit 50 Sekunden
RPC-Zeitlimit-Multiplikator 1,0
Maximales RPC-Zeitlimit 50 Sekunden
Zeitlimit beim Verbindungsaufbau 20 Sekunden
Lesezeitlimit 20 Sekunden

Weitere Informationen zu den Einstellungen finden Sie in der Java-Referenzdokumentation für RetrySettings.Builder und HttpTransportOptions.Builder.

Es gibt eine Teilmenge von Java-Vorgängen, die bedingt idempotent sind (bedingt sicher wiederholbar). Diese Vorgänge werden nur dann wiederholt, wenn sie bestimmte Argumente enthalten:

  • ifGenerationMatch oder generation

    • Sicher wiederholbar, wenn ifGenerationMatch oder generation als Option an die Methode übergeben wurde.
  • ifMetagenerationMatch

    • Sicher wiederholbar, wenn ifMetagenerationMatch als Option übergeben wurde.

StorageOptions.setStorageRetryStrategy ist standardmäßig auf StorageRetryStrategy#getDefaultStorageRetryStrategy festgelegt. Unter Wiederholungen anpassen finden Sie Beispiele zum Ändern des Standardverhaltens bei Wiederholungsversuchen.

Node.js

Standardmäßig unterstützen Vorgänge Wiederholungsversuche für die folgenden Fehlercodes:

  • Verbindungsfehler:
    • EAI_again: Dies ist ein DNS-Lookup-Fehler. Weitere Informationen finden Sie in der Dokumentation zu getaddrinfo.
    • Connection reset by peer: Dies bedeutet, dass Google Cloud die Verbindung zurückgesetzt hat.
    • Unexpected connection closure: Dies bedeutet, dass Google Cloud die Verbindung beendet hat.
  • HTTP-Codes:
    • 408 Request Timeout
    • 429 Too Many Requests
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout

Alle Einstellungen für exponentiellen Backoff in der Node.js-Bibliothek können konfiguriert werden. Standardmäßig verwenden Vorgänge über Node.js die folgenden Einstellungen für den exponentiellen Backoff:

Einstellung Standardwert (in Sekunden)
Automatische Wiederholung Wahr, wenn idempotent
Maximale Anzahl an Wiederholungen 3
Anfängliche Wartezeit 1 Sekunde
Multiplikator für die Wartezeit pro Iteration 2
Maximale Wartezeit 64 Sekunden
Standardfrist 600 Sekunden

Es gibt eine Teilmenge von Node.js-Vorgängen, die bedingt idempotent sind (bedingt sicher wiederholbar). Diese Vorgänge werden nur dann wiederholt, wenn sie bestimmte Argumente enthalten:

  • ifGenerationMatch oder generation

    • Sicher wiederholbar, wenn ifGenerationMatch oder generation als Option an die Methode übergeben wurde. Häufig akzeptieren Methoden nur einen dieser beiden Parameter.
  • ifMetagenerationMatch

    • Sicher wiederholbar, wenn ifMetagenerationMatch als Option übergeben wurde.

retryOptions.idempotencyStrategy ist standardmäßig auf IdempotencyStrategy.RetryConditional festgelegt. Unter Wiederholungen anpassen finden Sie Beispiele zum Ändern des Standardverhaltens bei Wiederholungsversuchen.

PHP

In der PHP-Clientbibliothek wird exponentieller Backoff standardmäßig verwendet.

Standardmäßig unterstützen Vorgänge Wiederholungsversuche für die folgenden Fehlercodes:

  • Verbindungsfehler:
    • connetion-refused: Dies kann aufgrund vorübergehender Netzwerkprobleme auftreten.
    • connection-reset: Dies bedeutet, dass Google Cloud die Verbindung zurückgesetzt hat.
  • HTTP-Codes:
    • 200: für Fälle mit teilweisem Download
    • 408 Request Timeout
    • 429 Too Many Requests
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout

Einige Einstellungen für exponentiellen Backoff in der PHP-Bibliothek können konfiguriert werden. Standardmäßig verwenden Vorgänge über PHP für den exponentiellen Backoff die folgenden Einstellungen:

Einstellung Standardwert (in Sekunden)
Automatische Wiederholung Wahr, wenn idempotent
Verzögerung für erste Wiederholung: 1 Sekunde
Verzögerungsmultiplikator der Wiederholung 2,0
Maximale Wiederholungsverzögerung 60 Sekunden
Zeitlimit für Anfragen 0 mit REST, 60 mit gRPC
Standardanzahl der Wiederholungen 3

Es gibt eine Teilmenge von PHP-Vorgängen, die bedingt idempotent sind (bedingt sicher wiederholbar). Diese Vorgänge werden nur dann wiederholt, wenn sie bestimmte Argumente enthalten:

  • ifGenerationMatch oder generation

    • Sicher wiederholbar, wenn ifGenerationMatch oder generation als Option an die Methode übergeben wurde. Häufig akzeptieren Methoden nur einen dieser beiden Parameter.
  • ifMetagenerationMatch

    • Sicher wiederholbar, wenn ifMetagenerationMatch als Option übergeben wurde.

Beim Erstellen von StorageClient wird standardmäßig die StorageClient::RETRY_IDEMPOTENT-Strategie verwendet. Unter Wiederholungen anpassen finden Sie Beispiele zum Ändern des Standardverhaltens bei Wiederholungsversuchen.

Python

Standardmäßig unterstützen Vorgänge Wiederholungsversuche für die folgenden Fehlercodes:

  • Verbindungsfehler:
    • requests.exceptions.ConnectionError
    • requests.exceptions.ChunkedEncodingError (nur für Vorgänge, die Nutzlastdaten abrufen oder an Objekte senden, z. B. Uploads und Downloads)
    • ConnectionError
    • http.client.ResponseNotReady
    • urllib3.exceptions.TimeoutError
  • HTTP-Codes:
    • 408 Request Timeout
    • 429 Too Many Requests
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout

Für Vorgänge über Python werden die folgenden Standardeinstellungen für exponentiellen Backoff verwendet:

Einstellung Standardwert (in Sekunden)
Automatische Wiederholung Wahr, wenn idempotent
Anfängliche Wartezeit 1
Multiplikator für die Wartezeit pro Iteration 2
Maximale Wartezeit 60
Standardfrist 120

Zusätzlich zu Cloud Storage-Vorgängen, die immer idempotent sind, werden die Vorgänge Objects: insert, Objects: delete und Objects: patch in der Python-Clientbibliothek standardmäßig automatisch wiederholt.

Es gibt eine Teilmenge von Python-Vorgängen, die bedingt idempotent sind (bedingt sicher wiederholbar), wenn sie bestimmte Argumente enthalten. Diese Vorgänge werden nur dann wiederholt, wenn ein Bedingungsfall erfolgreich ist:

  • DEFAULT_RETRY_IF_GENERATION_SPECIFIED

    • Sicher wiederholbar, wenn generation oder if_generation_match als Argument an die Methode übergeben wurde. Häufig akzeptieren Methoden nur einen dieser beiden Parameter.
  • DEFAULT_RETRY_IF_METAGENERATION_SPECIFIED

    • Sicher wiederholbar, wenn if_metageneration_match als Argument an die Methode übergeben wurde.
  • DEFAULT_RETRY_IF_ETAG_IN_JSON

    • Sicher wiederholbar, wenn die Methode ein etag in den JSON-Anfragetext einfügt. Für HMACKeyMetadata.update() bedeutet dies, dass das ETag für das HMACKeyMetadata-Objekt selbst festgelegt werden muss. Für die set_iam_policy()-Methode in anderen Klassen bedeutet dies, dass das ETag im Argument „policy“ festgelegt werden muss, das an die Methode übergeben wird.

Ruby

Standardmäßig unterstützen Vorgänge Wiederholungsversuche für die folgenden Fehlercodes:

  • Verbindungsfehler:
    • SocketError
    • HTTPClient::TimeoutError
    • Errno::ECONNREFUSED
    • HTTPClient::KeepAliveDisconnected
  • HTTP-Codes:
    • 408 Request Timeout
    • 429 Too Many Requests
    • 5xx Server Error

Alle Einstellungen für exponentiellen Backoff in der Ruby-Clientbibliothek können konfiguriert werden. Standardmäßig verwenden Vorgänge über die Ruby-Clientbibliothek die folgenden Einstellungen für den exponentiellen Backoff:

Einstellung Standardwert
Automatische Wiederholung Wahr
Maximale Anzahl an Wiederholungen 3
Anfängliche Wartezeit 1 Sekunde
Multiplikator für die Wartezeit pro Iteration 2
Maximale Wartezeit 60 Sekunden
Standardfrist 900 Sekunden

Es gibt eine Teilmenge von Ruby-Vorgängen, die bedingt idempotent sind (bedingt sicher wiederholbar), wenn sie bestimmte Argumente enthalten:

  • if_generation_match oder generation

    • Sicher wiederholbar, wenn der Parameter generation oder if_generation_match als Argument an die Methode übergeben wird. Häufig akzeptieren Methoden nur einen dieser beiden Parameter.
  • if_metageneration_match

    • Sicher wiederholbar, wenn der Parameter if_metageneration_match als Option übergeben wird.

Standardmäßig werden alle idempotenten Vorgänge wiederholt, bedingt idempotente Vorgänge nur dann, wenn der Bedingungsfall erfolgreich ist. Nicht-idempotente Vorgänge werden nicht wiederholt. Unter Wiederholungen anpassen finden Sie Beispiele zum Ändern des Standardverhaltens bei Wiederholungsversuchen.

REST APIs

Wenn Sie die JSON oder XML API direkt aufrufen, sollten Sie mit dem exponentiellen Backoff-Algorithmus Ihre eigene Wiederholungsstrategie implementieren.

Wiederholungsversuche anpassen

Console

Über die Google Cloud Console können Sie das Verhalten von Wiederholungsversuchen nicht anpassen.

Befehlszeile

Bei gcloud storage-Befehlen können Sie die Wiederholungsstrategie steuern, indem Sie eine benannte Konfiguration erstellen und einige oder alle der folgenden Attribute festlegen:

Einstellung Standardwert (in Sekunden)
base_retry_delay 1
exponential_sleep_multiplier 2
max_retries 32
max_retry_delay 32

Anschließend wenden Sie die definierte Konfiguration entweder einzeln pro Befehl mit dem projektweiten Flag --configuration oder für alle Google Cloud CLI-Befehle mit dem gcloud config set-Befehl an.

Clientbibliotheken

C++

Zum Anpassen des Wiederholungsverhaltens geben Sie Werte für die folgenden Optionen an, wenn Sie das Objekt google::cloud::storage::Client initialisieren:

  • google::cloud::storage::RetryPolicyOption: Die Bibliothek stellt die Klassen google::cloud::storage::LimitedErrorCountRetryPolicy und google::cloud::storage::LimitedTimeRetryPolicy bereit. Sie können Ihre eigene Klasse angeben, die die Schnittstelle google::cloud::RetryPolicy implementieren muss.

  • google::cloud::storage::BackoffPolicyOption: Die Bibliothek stellt die Klasse google::cloud::storage::ExponentialBackoffPolicy bereit. Sie können Ihre eigene Klasse angeben, die die Schnittstelle google::cloud::storage::BackoffPolicy implementieren muss.

  • google::cloud::storage::IdempotencyPolicyOption: Die Bibliothek stellt die Klassen google::cloud::storage::StrictIdempotencyPolicy und google::cloud::storage::AlwaysRetryIdempotencyPolicy bereit. Sie können Ihre eigene Klasse angeben, die die Schnittstelle google::cloud::storage::IdempotencyPolicy implementieren muss.

Weitere Informationen finden Sie in der Referenzdokumentation zur C++-Clientbibliothek.

namespace gcs = ::google::cloud::storage;
// Create the client configuration:
auto options = google::cloud::Options{};
// Retries only idempotent operations.
options.set<gcs::IdempotencyPolicyOption>(
    gcs::StrictIdempotencyPolicy().clone());
// On error, it backs off for a random delay between [1, 3] seconds, then [3,
// 9] seconds, then [9, 27] seconds, etc. The backoff time never grows larger
// than 1 minute.
options.set<gcs::BackoffPolicyOption>(
    gcs::ExponentialBackoffPolicy(
        /*initial_delay=*/std::chrono::seconds(1),
        /*maximum_delay=*/std::chrono::minutes(1),
        /*scaling=*/3.0)
        .clone());
// Retries all operations for up to 5 minutes, including any backoff time.
options.set<gcs::RetryPolicyOption>(
    gcs::LimitedTimeRetryPolicy(std::chrono::minutes(5)).clone());
return gcs::Client(std::move(options));

C#

Sie können die von der C#-Clientbibliothek verwendete Standard-Wiederholungsstrategie nicht anpassen.

Go

Wenn Sie einen Storage-Client initialisieren, wird eine Standardkonfiguration für Wiederholungsversuche festgelegt. Wenn die Optionen nicht überschrieben werden, werden sie in der Konfiguration auf die Standardwerte gesetzt. Nutzer können ein nicht standardmäßiges Wiederholungsverhalten für einen einzelnen Bibliotheksaufruf (mit BucketHandle.Retryer und ObjectHandle.Retryer) oder für alle Aufrufe konfigurieren, die von einem Client (mit Client.SetRetry) gemacht werden. Um das Wiederholungsverhalten zu ändern, übergeben Sie die relevanten RetryOptions an eine dieser Methoden.

Im folgenden Codebeispiel erfahren Sie, wie Sie das Wiederholungsverhalten anpassen.