Saya mencoba menjalankan perintah manajemen Django dari cron. Saya menggunakan virtualenv untuk menjaga proyek saya di-sandbox.
Saya telah melihat contoh di sini dan di tempat lain yang menunjukkan menjalankan perintah manajemen dari dalam virtualenv seperti:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Namun, meskipun syslog menunjukkan entri ketika tugas seharusnya dimulai, tugas ini tidak pernah benar-benar berjalan (file log untuk skrip kosong). Jika saya menjalankan baris secara manual dari shell, itu berfungsi seperti yang diharapkan.
Satu-satunya cara saat ini saya bisa mendapatkan perintah untuk dijalankan melalui cron, adalah dengan memecah perintah dan menempatkannya dalam skrip wrapper bash bodoh:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
EDIT:
ars datang dengan kombinasi perintah yang berfungsi:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Setidaknya dalam kasus saya, menjalankan skrip aktivasi untuk virtualenv tidak melakukan apa-apa. Ini berfungsi, begitu seterusnya dengan pertunjukan.
env
dan export
semuanya dalam bungkus skrip bash yang Anda panggil dari crontab.