Verwenden von Cron/Python

Verwenden von Cron/Python

Ich habe mich gefragt, ob meine Crontab-Jobs richtig geschrieben wurden. Ich hoffe, sie auf einem VPS ausführen zu können, und eine Überwachung ist nicht wirklich möglich. Ohne weitere Umschweife sind hier meine Cron-Jobs:

# cd into directory at 2:57 AM 
57 2 * * 1-5 cd /folder_name

# activate the virtual environment
58 2 * * 1-5 . env/bin/activate

# run the main script
59 2 * * 1-5 python main.py

# at 5pm break the script (worried the most about this part)
0 16 * * 1-5 ^C

Außerdem habe ich meine Systemuhr auf Ostküstenzeit umgestellt. Bedeutet das, dass die Cron-Jobs in der Ostküstenzeitzone ausgeführt werden?

Antwort1

Nein, crones ist keine Shell. Schreiben Sie ein Skript:

#!/bin/sh
cd /folder_name
. env/bin/activate
exec python main.py

Machen Sie es ausführbar und richten Sie dann einen crontabEintrag darauf:

57 2 * * 1-5 /path/to/script

Das Skript sollte dann jeden Montag bis Freitag um 2:57 Uhr in der (von Ihrem Computer erwarteten) lokalen Zeitzone ausgeführt werden. Wenn Sie Ihr Mailsystem richtig konfiguriert haben, werden Ihnen die Ergebnisse (sofern vorhanden) per E-Mail zugesendet.

Antwort2

Deine Cronjobs sind nicht richtig geschrieben. Jeder Cronjob bekommt seine eigene Umgebung, das heißt, der cdBefehl hat keinen Einfluss auf die folgenden Cronjobs.

Was virtuelle Umgebungen betrifft, empfehle ich, die virtuelle Umgebung manuell zu aktivieren und dann which pythonselbst auszuführen. Dadurch erhalten Sie einen vollständigen Pfad zu einer Umgebung, pythondie immer in dieser virtuellen Umgebung ausgeführt wird. Sie sollten diesen Python-Pfad in Ihrem Cron verwenden.

Die endgültige Crontab sollte ungefähr so ​​aussehen:

0 3 * * 1-5 /full/path/to/virtualenv/python /full/path/to/main.py

Um den Prozess später zu beenden, ist die häufigste Lösung für dieses Problem die Verwendung einer PID-Datei. Es gibt Python-Bibliotheken, die Ihnen dabei helfen. Diese Antwortist zu diesem Thema recht ausführlich, hat aber nicht wirklich etwas mit der Crontab-Frage zu tun.

verwandte Informationen