1. 程式人生 > >crontab 定時執行django自定義命令的坑

crontab 定時執行django自定義命令的坑

專案需求是要求一個月前的雲主機快照都要刪除,想著寫個Django自定義命令,扔到crontab裡面跑,跑來跑去測試和我說沒刪掉,怎麼會?一開始懷疑crontab,但是試試其他任務都跑了啊,然後django自定義命令裡面加日誌也沒見到有日誌輸出,最後我成哥提醒,加crontab日誌,終於發現癥結所在了。。。
日誌顯示jango.db.utils.OperationalError: (2003, ‘Can’t connect to MySQL server on ‘127.0.0.1’ (111 “Connection refused”)’),WTF,沒讀到環境變數連不上資料庫啊,Google 上各路方法souce一堆都不管用,最後只能改為定時執行shell指令碼,指令碼中寫自定義命令了。。。
1.shell指令碼

#!/bin/bash
###################
. /etc/profile
. ~/.bash_profile
##################
source /.venv/bin/activate
.venv/bin/python manage.py 自定義命令

2./etc/crontab

10 20 * * * root sh /var/www/ecscloud_web/delete_vm_snapshot.sh

3.自定義命令開頭加上

#!.venv/bin/python

終於搞定了,快照刪掉了,坑爹的問題啊,crontab遇到環境變數問題,能用shell指令碼的就不要直接寫/etc/crontab裡面,以上