2016-05-31 25 views
3

Ich habe 3 Python-Skripts, die zu unterschiedlichen Zeiten in AWS ausgeführt werden sollen. Derzeit habe ich diese 3 Skripts in einer EC2-Instanz und ich verwende cron, um sie auszuführen. Das erste und das zweite Skript laden einige Daten in ein bestimmtes Verzeichnis auf der EC2-Box herunter (etwa unter /home/ec2-user/data). Der dritte verwendet die heruntergeladenen Daten zum Ausführen.Planen von Python-Skripts für die Ausführung in AWS

Gelegentlich schlägt eines der ersten beiden Skripts fehl und verursacht auch den dritten Fehler. Ich habe jedoch keine Möglichkeit, die fehlgeschlagenen Skripts über cron erneut zu versuchen, es sei denn, ich erstelle die Fehlerwiederherstellungslogik in den Skripts. Außerdem bin ich nicht glücklich darüber, eine EC2-Instanz zu verwenden. Es ist keine gute Lösung. Es wäre besser, den AWS-Dienst dafür zu verwenden.

Ich möchte wissen, ob AWS Lambda ist ein guter Service hier zu verwenden? Wenn ja, wie gebe ich an, wo die Daten heruntergeladen werden sollen und wo das dritte Skript Daten lesen soll?

Oder gibt es einen anderen Dienst in AWS, der am besten in dieses Szenario passt?

Antwort

-1

Überprüfen Sie die Arbeiter Umwelt von AWS Elastic Beanstalk. Dadurch wird eine EC2- und eine SQS-Warteschlange gestartet, die automatisch von AWS EB-Docs verwaltet werden, und eine einfache tutorial. Im aktuellen Kontext müssen die Skripte irgendwie kommunizieren, weil das dritte Skript durch das zweite Skript konditioniert wird. Wie lange dauert es, bis die Skripte ausgeführt werden? Können Sie die Skripte zusammenführen? Bitte geben Sie weitere Einzelheiten an.

+0

Das erste Skript dauert 3 Minuten und das nächste dauert 10 Minuten. – Nik

+1

Lambda hat eine maximale Ausführungszeit von 300s. Elastic Beanstalk kann bis 1800 gehen und es gibt Optionen, die Ausführung basierend auf der Antwort und/oder dem Zeitlimit zu wiederholen - [Worker Details] (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features) -managing-env-tiers.html # worker-periodictasks). Ich schlage vor, ein Hauptskript zu erstellen, das die anderen Skripts verwaltet. Im Falle eines Fehlers gibt das Hauptskript einen Fehler zurück und auf diese Weise fügt EB den Job der SQS-Warteschlange erneut hinzu. – Catalin

+0

[Beispiel-App] (https://github.com/altcatalin/stackoverflow/tree/master/aws/elastic-beanstalk-worker-app) – Catalin

Verwandte Themen