[Python] Retry processing (Exponential Backoff) mémo dans AWS Lambda

Que dois-je faire avec le processus de nouvelle tentative dans la fonction Lambda? C'est un mémo auquel j'ai pensé.

La diapositive suivante a été utile pour le processus de nouvelle tentative dans Lambda.

En outre, les articles suivants sont détaillés sur la réduction exponentielle.

J'écrirai réellement

Les fonctions Lambda sont écrites dans AWS Chalice. (Réessayer le traitement peut être effectué sans aucun problème, même s'il ne s'agit pas de Chalice.) Pour les tentatives, essayez d'utiliser les bibliothèques suivantes.

$ pip install retrying

Il y a aussi retry, qui semble également être facile à réessayer.

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...')
    #Réessayez jusqu'à ce que False soit renvoyé
    return isinstance(exception, ClientError)

# retry_on_exception:Pour récupérer une exception spécifique
# stop_max_attempt_number:Nombre d'essais
# wait_exponential_multiplier:multiplicateur
@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='Fichiers qui peuvent ne pas exister')

@app.route('/')
def index():
    retryS3Test()

requirements.txt


retrying==1.3.3

Si vous déployez le projet calice et que vous atteignez Endpoint, vous devriez voir le journal suivant dans CloudWatch Log et il est en cours de nouvelle tentative.

スクリーンショット 2017-07-29 18.40.38.png

Recommended Posts

[Python] Retry processing (Exponential Backoff) mémo dans AWS Lambda
[Python] Scraping dans AWS Lambda
Récapitulatif si vous utilisez AWS Lambda (Python)
Élément de mémo Python efficace 11 Utilisez zip pour traiter les itérateurs en parallèle
Exécutez Python selon la planification sur AWS Lambda
Bonnes pratiques pour la journalisation au format JSON sur AWS Lambda / Python
[Couches Python / AWS Lambda] Je souhaite réutiliser uniquement le module dans AWS Lambda Layers
J'ai comparé Node.js et Python lors de la création d'une miniature à l'aide d'AWS Lambda
Notifier HipChat avec AWS Lambda (Python)
Surveillance simple du serveur avec AWS Lambda (Python) et notification des résultats avec Slack
Le module ne peut pas être importé en Python sur EC2 exécuté à partir d'AWS Lambda
[AWS] Notes pour éviter les problèmes lors de l'installation de awscli et boto3 dans l'environnement Python 2.7
Téléchargez ce que vous avez dans la demande vers S3 avec AWS Lambda Python
[AWS] Utilisation de fichiers ini avec Lambda [Python]
Utiliser l'impression dans l'expression lambda Python2
Obtention d'informations d'identification AWS temporaires en PHP, Python
Traiter plusieurs listes avec for en Python
[Python] Exécutez Headless Chrome sur AWS Lambda
Connectez-vous à s3 avec AWS Lambda Python
Mémo pour l'envoi et la réception d'images avec Python (Flask)
Notes d'évaluation de la qualité d'image CG en Python
Mémo Python
mémo python
Mémo Python
Mémo Python
Créez des paramètres dans terraform pour envoyer des messages depuis AWS Lambda Python3.8 vers Slack
Mémo Python
Exécutez régulièrement des programmes Python sur AWS Lambda
Un mémo que j'ai écrit un tri rapide en Python
Différences entre queryStringParameters et multiValueQueryStringParameters dans AWS Lambda
Création d'un processus de numérotation à l'aide de python dans le processus de numérotation locale DynamoDB
Python: j'ai pu récurer en lambda
Un mémo que j'ai écrit un tri de fusion en Python
LINE BOT avec Python + AWS Lambda + API Gateway
Application sans serveur avec AWS SAM! (APIGATEWAY + Lambda (Python))
[AWS / Lambda] Comment charger une bibliothèque externe Python
Premiers pas avec AWS IoT facilement en Python
Résumé de l'étude de Python pour utiliser AWS Lambda
Convertir un float exponentiel en str en Python
Version Amazon API Gateway et AWS Lambda Python