在Django執行定時任務,可以通過django-crontab擴展來實現。
安裝
pip install django-crontab
添加應用
INSTALLED_APPS = [
...
'django_crontab', # 定時任務
...
]
設置任務的定時時間
在配置文件中設置定時執行的時間
每個定時任務分爲三部分定義:
-
任務時間
基本格式 : * * * * * 分 時 日 月 周 命令 M: 分鐘(0-59)。每分鐘用*或者 */1表示 H:小時(0-23)。(0表示0點) D:天(1-31)。 m: 月(1-12)。 d: 一星期內的天(0~6,0爲星期天)。
-
任務方法
-
任務日誌
首頁的定時任務設置如下
# 定時任務
CRONJOBS = [
# 每5分鐘執行一次生成主頁靜態文件
('*/5 * * * *', 'contents.crons.generate_static_index_html', '>> Desktop/aaa/logs/crontab.log')
]
參數解釋:
# 執行定時任務的方法
contents.crons.generate_static_index_html
# 執行定時任務保存的日誌文件
Desktop/aaa/logs/crontab.log
解決中文字符問題
在定時任務中,如果出現非英文字符,會出現字符異常錯誤
可以通過在配置文件中添加定時任務執行的附加命令來實現
# 解決crontab中文問題
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'
開啓定時任務
添加定時任務到系統中
python manage.py crontab add
顯示已經激活的定時任務
python manage.py crontab show
移除定時任務
python manage.py crontab remove