Uruchamianie cykliczne skryptu pythona

0

Posiadam program do przetwarzania danych, który musi uruchamiać się co 10min i sprawdzać czy na serwerze pojawiły się nowe dane.
Używam systemowego interpretera pythona na Ubuntu 20.04

Napisałem taki skrypt w Bashu:

if [[ $(ps wwuxaf | grep "python" | grep "main.py" | wc -l)  > 0 ]] ; then echo "Application is running"; else cd /media/directory/ScriptGenerator/ && /usr/bin/python3.8 /media/directory/ScriptGenerator/main.py -j /media/directory/ScriptGenerator/config.json -s 2020-10-08 -e 2020-10-20 ; fi

Dodanie skryptu do CRON:

*/10 * * * * /media/RunScript.sh

Czy poza dodaniem takiego skryptu do CRON istnieje inny sposób cyklicznego uruchamiania skryptu?
Reakcja na pojawienie się nowych danych jest dość skomplikowana i tylko uruchomienie programu może sprawdzić czy należy go uruchomić.

Obliczenia wykonują się kilka godzin i dobrze aby skrypt sprawdził czy Python jest uruchomiony i nie uruchamiał tego samego dwa razy.
Czy moje rozwiązanie jest poprawne?

0

Postaw sobie airflow. Oprócz tego, że można w nim zaplanować wykonanie kodu, to jeszcze można określić czy ma powtarzać skrypt w razie jakiegoś błędu np. serwer źródłowy chwilowo nie odpowiada. Można również określić ile instancji danego zadania może działać jednocześnie.

3

Trochę niespójne; nowe dane mogą się pojawiać co dziesięć minut, a ich przetwarzanie trwa kilka godzin; jak to się sumuje?

0

A nie może działać cały czas w pętli z jakąś opcją sleep?

0

@lion137: @PaulGilbert

Program oblicza dane przez 2-3.5h
Rozpoczęcie obliczeń może rozpocząć się tylko w momencie, gdy w serwisie zewnętrznym pojawią się nowe dane

Ustawiłem te 10min jako interwał czasowy odpytywania serwera o nowe dane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1