[PYTHON] Décorateur qui notifie sur AWS-SNS si la fonction ne se termine pas dans le délai spécifié

Je l'ai écrit pour la première fois à l'aide d'un décorateur et d'un signal. C'est un décorateur qui vous avertit si la fonction ne se termine pas dans le délai spécifié. Il semble que vous puissiez l'utiliser pour vous informer des lots qui prennent trop de temps lorsque vous exécutez des lots de nuit sur AWS.

pytimekeeper.py


# -*- coding: utf-8 -*-                                                                                                                           
import signal
import boto.sns

def timeout(limit, topic, subject='Execution Timeout.', body='Please check program.', region='us-east-1'):
    '''                                                                                                                                           
Comment utiliser:Un décorateur qui vous avertit avec aws sns s'il ne se termine pas dans le délai d'exécution spécifié.
    @timeout(limit=3600, topic='arn:aws:sns:xxxxxxxx:yyyyyyy')                                                                                    
    def long_time_function():
        very_very_long_calc()                                                                                                               
    '''
    def notify_aws_sns(signum, frame):
        conn = boto.sns.connect_to_region(region)
        conn.publish(topic, body, subject)

    def __decorator(function):
        def __wrapper(*args, **kwargs):
            signal.signal(signal.SIGALRM, notify_aws_sns)
            signal.alarm(limit)
            result = function(*args, **kwargs)
            signal.alarm(0)
            return result
        return __wrapper

    return __decorator

Recommended Posts

Décorateur qui notifie sur AWS-SNS si la fonction ne se termine pas dans le délai spécifié
Décorateur qui fait quelque chose si la fonction ne se termine pas dans le délai spécifié
Comment créer un nouveau fichier lorsque le fichier spécifié n'existe pas - Ecrire si le fichier existe
Grep pour que grep n'apparaisse pas au moment de grep
Si vous êtes novice en programmation, pourquoi ne pas créer un "jeu" pour le moment? L'histoire
Lors de l'incrémentation de la valeur d'une clé qui n'existe pas
Si vous donnez une liste avec l'argument par défaut de la fonction ...
Une fonction qui mesure le temps de traitement d'une méthode en python
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Une histoire qui parfois ne marche pas si pip est le dernier
J'ai essayé un réseau de neurones Π-Net qui ne nécessite pas de fonction d'activation
J'ai essayé de créer une fonction de dictionnaire insensible à la casse