定時(shí)任務(wù)使用的場(chǎng)景很多,以定時(shí)生成靜態(tài)首頁(yè)為例。
1. 安裝支持包:django-crontab
安裝方式:pip install django-crontab
2. 注冊(cè)定時(shí)應(yīng)用
在settings.INSTALLED_APPS中添加應(yīng)用:
INSTALLED_APPS = [
'django_crontab', # 定時(shí)任務(wù)
]
3. 定時(shí)任務(wù)crontab的時(shí)間設(shè)置格式
定時(shí)時(shí)間基本格式 :
5個(gè)''符號(hào): * * * * 命令
依次對(duì)應(yīng):分 時(shí) 日 月 周
M: 分鐘(0-59)。每分鐘用 * 或者 */1 表示
H:小時(shí)(0-23)。(0表示0點(diǎn))
D:天(1-31)。
m: 月(1-12)。
d: 一星期內(nèi)的天(0~6,0為星期天)。
示例:
每1分鐘執(zhí)行一次myCommand
* /1* * * * myCommand
每小時(shí)的第3和第15分鐘執(zhí)行
3,15 * * * * myCommand
在上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行
3,15 8-11 * * * myCommand
每隔兩天的上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行
3,15 8-11 */2 * * myCommand
每周一上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行
3,15 8-11 * * 1 myCommand
4. 設(shè)置定時(shí)任務(wù)
在settings中添加CRONJOBS,設(shè)置定時(shí)任務(wù)。
以下示例定時(shí)任務(wù)為:apps下--contents應(yīng)用內(nèi)--generate_static_index_html方法;
定時(shí)時(shí)間為:每隔一分鐘運(yùn)行一次;
">>"符:拼接定時(shí)任務(wù)運(yùn)行結(jié)果保存路徑。
例如我想進(jìn)行定時(shí)執(zhí)行test.py下的abc(),則為
CRONJOBS = [
# 每1分鐘生成一次首頁(yè)靜態(tài)文件
('*/1 * * * *', 'contents.crons.generate_static_index_html', '>> ' + os.path.join(os.path.dirname(BASE_DIR), 'logs/crontab.log'))
]
5. 設(shè)置中文支持
在定時(shí)任務(wù)中,如果出現(xiàn)非英文字符,會(huì)出現(xiàn)字符異常錯(cuò)誤
在settings中添加:
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'
6. 管理定時(shí)任務(wù)
添加定時(shí)任務(wù)到系統(tǒng)中,啟動(dòng)定時(shí)任務(wù)必須先執(zhí)行改語(yǔ)句。
$ python manage.py crontab add
顯示已激活的定時(shí)任務(wù)
$ python manage.py crontab show
移除定時(shí)任務(wù)
$ python manage.py crontab remove