[PYTHON] Verwenden Sie den zu Boto3 hinzugefügten Wiederholungsverarbeitungsmodus

Einführung

Das AWS SDK implementiert eine automatische Wiederholungslogik mit Exponential Backoff. Boto3 bietet drei Wiederholungsverarbeitungsmodi.

Das Überprüfen des GitHub-Repositorys von botocore zeigt, dass es im Februar 2020 standardmäßig und anpassungsfähig ist. Hinzugefügte und frühere Implementierungen werden als Legacy bezeichnet.

Add support for new retry modes #1972

Aus Kompatibilitätsgründen ist der Standard Legacy und die Funktionen wurden in Standard / Adaptiv hinzugefügt Um es zu verwenden, müssen Sie den Wiederholungsverarbeitungsmodus explizit ändern.

So ändern Sie den Wiederholungsverarbeitungsmodus

Instanziieren Sie das Botocore-Konfigurationsobjekt und senden Sie die Konfigurationsinformationen an den Client Sie können es bestehen. Die verfügbaren Optionen sind "max_attempts" und "mode". Die standardmäßige maximale Anzahl von Wiederholungsversuchen variiert je nach Wiederholungsverarbeitungsmodus. Kann durch max_attempts angepasst werden.

import boto3
from botocore.config import Config

config = Config(
   retries = {
      'max_attempts': 10,
      'mode': 'standard'
   }
)

ec2 = boto3.client('ec2', config=config)

Übersicht über jeden Wiederholungsverarbeitungsmodus

Legacy retry mode Dies ist der Standardmodus, der von Boto3-Clients verwendet wird. Der zur Berechnung der Backoff-Zeit verwendete Faktor ist 2. Der v1-Wiederholungshandler (https://github.com/boto/botocore/blob/master/botocore/retryhandler.py) wird verwendet. Es gibt eine begrenzte Anzahl von Fehlern / Ausnahmen für Wiederholungsversuche.

Standard retry mode Wiederholungsregeln sind mit mehrsprachigen AWS SDKs und konsistenter Logik standardisiert. Es behandelt mehr Drosselungs- / Begrenzungsfehler und Ausnahmen als der Legacy-Modus. Der Faktor, der zur Berechnung der Backoff-Zeit verwendet wird, beträgt 2, wie im Legacy-Modus, jedoch mit maximal 20 Sekunden. Der v2-Wiederholungshandler (https://github.com/boto/botocore/tree/master/botocore/retries) wird verwendet.

legacy standard
Standardmäßige maximale Anzahl von Versuchen 5 3
Umgang mit vorübergehenden Verbindungsfehlern ConnectionError
ConnectionClosedError
ReadTimeoutError
EndpointConnectionError
RequestTimeout
RequestTimeoutException
PriorRequestNotComplete
ConnectionError
HTTPClientError
throttling/Nicht reagieren, um Fehler und Ausnahmen einzuschränken Throttling
ThrottlingException
ThrottledException
RequestThrottledException
ProvisionedThroughputExceededException
Throttling
ThrottlingException
ThrottledException
RequestThrottledException
TooManyRequestsException
ProvisionedThroughputExceededException
TransactionInProgressException
RequestLimitExceeded
BandwidthLimitExceeded
LimitExceededException
RequestThrottled
SlowDown
EC2ThrottledException
Wiederholen Sie den Vorgang nach Statuscode 429/500/502/503/504/509 usw. 500/502/503/504
Formel zur Berechnung der Verzögerungszeit rand(0, 1) * (2 ^ (attempts - 1)) min(rand(0, 1) * 2 ^ attempt, 20)

Adaptive retry mode Clientseitig mit Token-Bucket-Algorithmus zusätzlich zur Standardmodus-Funktionalität Automatische Ratenbegrenzungsfunktion und Fehler- / Ausnahme- / HTTP-Statuscode auf der AWS-Serviceseite für jeden erneuten Versuch Die Möglichkeit, Ratenbegrenzungsvariablen basierend auf zu ändern, wurde hinzugefügt. Eine flexible Neuausführung kann auf der Clientseite entsprechend dem Fehlerinhalt durchgeführt werden. ** Dies ist ein experimenteller Modus, daher können sich seine Funktionen und sein Verhalten in Zukunft ändern. ** **.

Referenz

Retries - Boto3 Docs https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html

das ist alles. Ich bin froh, wenn Sie es als Referenz verwenden können.

Recommended Posts

Verwenden Sie den zu Boto3 hinzugefügten Wiederholungsverarbeitungsmodus
Verwendung des Generators
Wie benutzt man den Dekorateur?
Überlassen Sie die mühsame Verarbeitung Python
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
[Python] Verwendung von Liste 3 Hinzugefügt
Verwendung des ConfigParser-Moduls
Verwenden Sie boto3, um zu S3 zu gelangen
[Linux] Verwendung des Befehls echo
Verwenden Sie numpys .flatten () [0], um den Wert abzurufen
Verwendung des IPython-Debuggers (ipdb)
Verwenden Sie boto, um Dateien auf s3 hoch- / herunterzuladen.
3 beste Möglichkeiten, den Befehl less zu verwenden
Verwendung der C-Bibliothek in Python
So verwenden Sie MkDocs zum ersten Mal
Lassen Sie uns Wiki-Informationen mithilfe der MediaWiki-API abrufen
Aktivieren Sie die Code-Vervollständigung auf boto3 mit boto3-Stubs
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Verwenden Sie Dekorateure, um eine erneute Ausführung der Datenverarbeitung zu verhindern
Verwendung der Grafikzeichnungsbibliothek Bokeh
Verwendung der Google Cloud Translation API
Verwendung der NHK-Programmführer-API
Der einfachste Weg, OpenCV mit Python zu verwenden
[Algorithmus x Python] Verwendung der Liste
Verwenden Sie das Python-Framework "cocotb", um Verilog zu testen.
Verwendung der PyTorch-basierten Bildverarbeitungsbibliothek "Kornia"
Loggen Sie sich mit json mit pygogo ein.
Ich möchte die Aktivierungsfunktion Mish verwenden
Dekorateur zu versuchen
[Einführung in Python] Verwendung der while-Anweisung (wiederholte Verarbeitung)
Ausführen des in Ansible Tower hinzugefügten Ansible-Moduls
Verwendung von Raspeye Relay Module Python
Verwendung des interaktiven Python-Modus mit Git Bash
Ich wollte die Python-Bibliothek von MATLAB verwenden
Linux-Benutzer hinzufügen, wie der Befehl useradd verwendet wird
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
Verwendung des Befehls grep und häufiger Samples
Verwendung der Exist-Klausel in Django Queryset
Geben Sie MinGW als den in Python verwendeten Compiler an
[Einführung in die Udemy Python3 + -Anwendung] 27. Verwendung des Wörterbuchs
[Einführung in die Udemy Python3 + -Anwendung] 30. Verwendung des Sets
Wie man Argparse benutzt und den Unterschied zwischen Optparse
Verwendung des in Lobe in Python erlernten Modells
Verwendung der Solver-Bibliothek "kociemba" von Rubik Cube
(Denken Sie schnell daran) Verwendung der LINUX-Befehlszeile
Die Programmiersprache, die Sie verwenden möchten
Ich möchte R-Datensatz mit Python verwenden
Verwenden Sie mit boto3 etwas anderes als das Standardprofil
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 8 Verarbeitungszeitmessung und Profiler