Python – Cronjobs im Virtualenv per Wrapper-Script

Wenn man einem Python-Script per Cron in einen Virtual Environment starten möchte bringt dies ein paar Probleme mit sich. Das Virtual Environment muss vorher aktiviert werden und dann erst das Script ausgeführt werden.

Man kann dies nun umständlich für jedes Script separat erledigen oder mach baut sich einen universellen Wrapper.

Der Wrapper legt man einfach in sein Homedir und übergibt diesem per Parameter das auszuführende Python-Script.

Python Virtualenv Wrapper

Wir erstellen eine Datei cron_wrapper.sh im HomeDir des Users.

#!/bin/bash 
# cron_wrapper.sh 
# phyton venv cron wrapper 

cd `dirname $0` 
# Pfad zum virtual environment 
source .venv/bin/activate 
python "${@:1}"

Per Cronjob kann diese nun folgendermaßen aufgerufen werden.

*/10 * * * * /pfad_zum_wrapper/cron_wrapper.sh /pfad_zum_python_script/python_script.py >> /tmp/cron.log 2>&1

Der Wrapper kann natürlich noch ausgebaut werden, z.B. kann man den Pfad des Virtual Environment auch dynamisch per Parameter übergeben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.