django-crontab
1、安装django-crontab
$ pip install django-crontab
2、在django项目settings.py中注册
INSTALLED_APPS = [
......
'django_crontab',
'app_name'
]
【注意】django_crontab一定要注册在应用名之前,在这里是下划线,不是短横。
3、在settings.py中配置定时任务
# 定时任务设置
CRONJOBS = [
# 检测周循环任务
('0 2 */7 * *', 'utils.cron.week_schedule.week_schedule', '>>' + os.path.join(BASE_DIR, 'logs/crontab.log')),
# 检测月循环任务
('0 2 1 * *', 'utils.cron.month_schedule.month_schedule', '>>' + os.path.join(BASE_DIR, 'logs/crontab.log')),
# 检测年循环任务
('0 2 1 1 *', 'utils.cron.year_schedule.year_schedule', '>>' + os.path.join(BASE_DIR, 'logs/crontab.log')),
]
4、如何在django中添加任务
#django中添加定时任务
python manage.py crontab add
#django中移出定时任务
python manage.py crontab remove
#django中展示已添加的定时任务
python manage.py crontab show
#django中单次手动执行定时任务
python manage.py crontab run <tash_hash_id>
5、扩展
前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 周一到周五九点到十点每五分钟触发任务
6、解决crontab中文问题
CRONTAB_COMMAND_PREFIX = 'LANG=zh_cn.UTF-8'