Was soll ich mit dem Wiederholungsvorgang in der Lambda-Funktion tun? Es ist ein Memo, über das ich nachgedacht habe.
Die folgende Folie war hilfreich für den Wiederholungsprozess in Lambda.
Darüber hinaus werden die folgenden Artikel ausführlich zu Exponential Backoff beschrieben.
Lambda-Funktionen sind in AWS Chalice geschrieben. (Die Wiederholungsverarbeitung kann problemlos durchgeführt werden, auch wenn es sich nicht um Kelch handelt.) Verwenden Sie für Wiederholungsversuche die folgenden Bibliotheken.
$ pip install retrying
Es gibt auch Wiederholung, die ebenfalls leicht zu wiederholen scheint.
app.py
from chalice import Chalice
from datetime import datetime
from retrying import retry
import boto3
from botocore.exceptions import ClientError
app = Chalice(app_name='exponential-backoff')
def retryIfClientError(exception):
print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
print('retrying...')
#Wiederholen Sie diesen Vorgang, bis False zurückgegeben wird
return isinstance(exception, ClientError)
# retry_on_exception:Eine bestimmte Ausnahme abholen
# stop_max_attempt_number:Anzahl von Versuchen
# wait_exponential_multiplier:Multiplikator
@retry(retry_on_exception=retryIfClientError, stop_max_attempt_number=3, wait_exponential_multiplier=1000)
def retryS3Test():
s3 = boto3.resource('s3')
client = s3.meta.client
response = client.get_object(Bucket='mybucket', Key='Dateien, die möglicherweise nicht vorhanden sind')
@app.route('/')
def index():
retryS3Test()
requirements.txt
retrying==1.3.3
Wenn Sie das Kelchprojekt bereitstellen und auf Endpoint klicken, sollte das folgende Protokoll im CloudWatch-Protokoll angezeigt werden und es wird erneut versucht.