[PYTHON] Dekorateur, der AWS-SNS benachrichtigt, wenn die Funktion nicht innerhalb der angegebenen Zeit beendet wird

Ich habe es zum ersten Mal mit einem Dekorateur und einem Signal geschrieben. Es ist ein Dekorateur, der Sie benachrichtigt, wenn die Funktion nicht innerhalb der angegebenen Zeit beendet wird. Es scheint, dass Sie es verwenden können, um Sie über Stapel zu informieren, die zu lange dauern, wenn Sie Nachtstapel in AWS ausführen.

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'):
    '''                                                                                                                                           
Wie benutzt man:Ein Dekorateur, der Sie mit aws sns benachrichtigt, wenn er nicht innerhalb der angegebenen Ausführungszeit fertig ist.
    @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

Dekorateur, der AWS-SNS benachrichtigt, wenn die Funktion nicht innerhalb der angegebenen Zeit beendet wird
Dekorateur, der etwas tut, wenn die Funktion nicht innerhalb der angegebenen Zeit beendet wird
So erstellen Sie eine neue Datei, wenn die angegebene Datei nicht vorhanden ist - schreiben Sie, wenn die Datei vorhanden ist
Grep, damit grep zum Zeitpunkt von grep nicht angezeigt wird
Wenn Sie neu in der Programmierung sind, warum machen Sie nicht vorerst ein "Spiel"? Die Geschichte
Beim Inkrementieren des Werts eines Schlüssels, der nicht vorhanden ist
Wenn Sie eine Liste mit dem Standardargument der Funktion angeben ...
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
Eine Geschichte, die manchmal nicht funktioniert, wenn pip die neueste ist
Ich habe ein neuronales Netzwerk Π-Net ausprobiert, für das keine Aktivierungsfunktion erforderlich ist
Ich habe versucht, ein Wörterbuch ohne Berücksichtigung der Groß- und Kleinschreibung zu erstellen