用 django-crontab 為 Django 添加定時任務
需求
做后台開發的時候,有時候會遇到這樣的需求,在某個固定時間或者一定時間間隔自動觸發某一事件。比如說我有一個需求要求是,周一到周五早上九點發送郵件。
使用
安裝第三方包 django-crontab
pip install django-crontab
配置第三方包
# 配置文件 settings.py
INSTALLED_APPS = (
'django_crontab',
...
)
定義任務
# 子應用下某個 py 文件里添加任務函數
# mail/send_mail.py
def task_send_mail():
pass
配置任務
# 配置文件 settings.py
CRONJOBS = [
('0 9 * * 1-5', 'mail.send_mail.task_send_mail')
]
對任務的操作命令 添加並啟動任務 查看任務 刪除任務
python manage.py crontab add
python manage.py crontab show
python manage.py crontab remove
補充
配置任務的五個 * * * * *
前5個(*)星號
M(分鍾0-59)
H(小時0-23)
D(天1-31)
m(月1-12)
d(一星期0-6,0為星期天)
特殊符號
* 代表所有的取值范圍的數字
/ 代表每的意思,*/5就是每5個單位
- 代表從某個數字到某個數字
, 分開幾個離散的數字
eg:
0 14 * * 1-5 周一到周五每天下午兩點觸發任務
0 10 * * 0,6 周六、周天早上十點觸發任務
*/5 9-10 * * 1-5 周一到周五九點到十點每五分鍾觸發任務
打印 log
# 將在任務函數中 print 的內容打印到你指定的文件中
('0 9 * * 1-5','mail.send_mail.task_send_mail','> send_mail.txt')