使用django-crontab執行django自定義指令
阿新 • • 發佈:2018-12-03
django-crontab 部署
- 需求:再指定的時間內輸入
django的自定義指令
,來進行一些需求的操作。
使用流程:
1.安裝:
pip install django-crontab
2.配置 settings.py檔案:
-
再
settings.py
檔案中新增 django-crontab: -
INSTALLED_APPS = ( ... 'django_crontab', )
3.配置django-crontab:
-
再
settings.py
中新增一下命令: -
CRONJOBS =
-
如果要再指定的時間內輸入
django自定義的指令
,其實還可以定時函式:CRONJOBS = ( # 每天早上6點執行命令 ('0 6 * * *', 'django.core.management.call_command'
-
注意:要執行的命令,直接輸入你django專案中自定義的指令就好,不需要新增python manage.py xxxxx(自定義指令)
操作命令:
檢視系統中已有的定時任務:
python manage.py crontab show
新增和修改定時任務:
python manage.py crontab add
刪除定時任務:
python manage.py crontab remove
注意事項:
1:該django-crontab : 不能再win系統上操作。
2:如果再操作命令的時候報錯:
-
RuntimeError: No job with hash 18a9888406b9f5486e6b7ea52ee68dbf found. It seems the crontab is out of sync with your settings.CRONJOBS. Run "python manage.py crontab add" again to resolve this issue!
-
解決方案:意思就是修改過了,可以再執行一次命令就好:
python manage.py crontab add
3:django-crontab 必須再linux的crontab開啟的情況下才可以使用。
4:如果你測試有沒有跑通的時候,輸入的只是一個print()語句的話,那麼你將看不到任何內容。
- 可以再
/var/spool/mail/root
中檢視你的輸入語句: - 一般這種情況mail的內容就只是一些正常的系統資訊或者是比較重要的錯誤報告。如果你安裝了mutt的話直接用這個命令就可以檢視mail的內容(用root登陸先),沒有裝的話用cat /var/spool/mail/root檢視(用root登陸先)。
crontab的執行時間舉例:
-
crontab範例 :
每五分鐘執行 */5 * * * * 每小時執行 0 * * * * 每天執行 0 0 * * * 每週執行 0 0 * * 0 每月執行 0 0 1 * *
crontab 常用命令:
crontab -e
編輯定時任務crontab -l
檢視定時任務
使用shell指令碼來實現定時執行自定義指令:
-
寫一個shell指令碼來自動執行:
-
建立一個shell指令碼:
#!/bin/bash/usr/bin/python /xxx/xxx/xxx/manage.py sss
- xxx:manage.py 所在的目錄下的
絕對路徑
- 切換到manange.py 所在的目錄
pwd
:檢視當前的路徑。
- 切換到manange.py 所在的目錄
- sss:代表你django中自定義的指令
-
輸入命令:crontab -e 編輯定時任務:
-
注意:
-
可能此刻crontab沒有跑起來, 去檢視log 日誌會提示你
Permission denied
-
解決方案:
chmod 777 lhq.sh
就Ok了。
-