, wie ich ein Python-Skript von crontab nennen, die (Quelle env/bin/aktiv) aktivieren Verwendung erfordert?Aufruf Python-Skript von crontab mit activate
Antwort
virtualenv des activate Skript ist ziemlich einfach. Es legt meistens den Pfad zu Ihrem Python-Interpreter von virtualenv fest; die anderen Dinge, die es tut (Einstellung PS1
, Speichern alter Variablen, etc.) sind nicht wirklich notwendig, wenn Sie nicht in einer interaktiven Shell sind. Der einfachste Weg ist nur Ihren Python-Skript mit dem richtigen Python-Interpreter zu starten, die in einem von zwei Arten erfolgen können:
1. Ihren Python-Skript einrichten, um Ihre virtualenv Dolmetscher Python verwendet
Unter der Annahme, Dolmetscher Ihre virtualenv ist bei ~/virtualenv/bin/python
ist, können Sie diesen Pfad an der Spitze Ihres Python-Skript setzen:
#!/home/user/virtualenv/bin/python
Und dann starten Sie Ihr Skript von Ihrem crontab, als normal.
2. Starten Sie das Skript mit dem richtigen Python-Interpreter in Ihrem cronjob
Ihr Skript Unter der Annahme, bei ~/bin/cronjob
und Pythons Ihre virtualenv Interpreter ist bei ~/virtualenv/python
, könnten Sie dies in Ihrer crontab setzen:
* * * * * /home/user/virtualenv/python /home/user/bin/crontab
Mein Ansatz ist immer crontab so einfach wie möglich zu halten und alle Konfigurationen innerhalb Skripte von crontab genannt zu behandeln.
1) Erstellen Sie ein Shell-Skript: zum Beispiel /var/webapp/cron.sh
#!/bin/sh
PATH="/var/webapp/.env/bin:$PATH"
export PATH
cd /var/webapp/
python test.py
wo /var/webapp/.env/bin ist die virtualenv Lage. Stellweg, benötigen Sie keine Quelle ../activate
2) Stellen Sie richtig Ihre Umgebung ausgeführt werden. Zum Beispiel für eine Anwendung Django:
#!/usr/bin/env python
import os
from datetime import datetime
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.production'
os.environ['DJANGO_CONF'] = 'settings.production'
from util.models import Schedule
dset = Schedule.objects.all()
for rec in dset:
print rec
print 'cron executed %s' % datetime.today()
Auf diesem Beispiel django Einstellungen werden auf Einstellungen/production.py befindet
3) Schließlich bearbeiten/etc/crontab. Zum Beispiel zu werden jede halbe Stunde ausführen, jeden Tag:
1,31 * * * * root /var/webapp/cron.sh >> /var/webapp/cron.log
Beachten Sie, dass es wichtig ist, Protokolle zu erzeugen, um Ihnen Fehler oder Debug-Meldungen finden zu helfen.
- 1. Muss Associate() vor dem Aufruf aufrufen activate()
- 2. Activate cURL mit EasyPHP
- 3. Activate SearchBar
- 4. Ausführen von PHP mit Crontab
- 5. Run Makefile mit Crontab
- 6. Crontab mit Benutzereingabe starten
- 7. sende activate-email mit django-registration
- 8. Hinweis zur Verwendung von Crontab mit Bash
- 9. Validieren von Crontab-Einträgen mit PHP
- 10. Erstellen crontab über Capistrano statt mit crontab -e
- 11. Authentifizierung mit Sudo auf einem Crontab-Job
- 12. java: run-Prozess von crontab
- 13. Wie Code mit Svn mit Crontab aktualisieren?
- 14. Crontab + rails3 + bundler
- 15. Ausführen eines Crontab-Jobs mit einem Annaconda-Env
- 16. Crontab in Python
- 17. Ausführen eines Python-Programms von Crontab
- 18. Python OpenWRT crontab
- 19. Abrufen von java.lang.NullPointerException beim Aufrufen der activate-Methode auf TaskClient
- 20. Verwenden von Crontab in einem Python-Skript
- 21. Crontab CD zum Verzeichnis
- 22. Python3: nur UnicodeEncodeError, wenn sie von crontab
- 23. Crontab PATH und USER
- 24. IMMDevice :: Activate() mit IBaseFilter Rück REGDB_E_CLASSNOTREG Klasse nicht registriert
- 25. Crontab alle 5 Minuten
- 26. Activate Header nach PHP-Anfrage ist abgeschlossen
- 27. Kann nicht Bash-Skript von crontab laufen, wenn es von der Kommandozeile bash läuft
- 28. Ausführung der Bash-Datei mit Java-Datei von Crontab
- 29. Automatisieren benutzerdefinierte Django-Management-Befehl mit crontab, innerhalb von virtualenv
- 30. running git von crontab - Berechtigung verweigert
was über die Wege Bibliotheken easy_install? – Timmy
Wenn sie auch in der virtuellen Umgebung oder dem Verzeichnis "global" site-packages installiert sind, sollten sie gefunden werden; Andernfalls werden Sie sie in Ihrem '$ PYTHONPATH' setzen müssen, was ein bisschen hässlicher wird aber mit'/usr/bin/env', etc. zu jagen den Python bin erreicht werden kann durch den Markt. – mipadi
der letzte Codeblock sollte wahrscheinlich mit "/ home/bin/cronjob" enden –