专业网站的建设,网站 平均加载时间,做期货苯乙烯的网站,找产品做代理都有哪个网站Django之定时任务django-crontab crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务符号方法解决crontab中文问题管理定时任务注意 crontab Django可以使用第三方库如django-crontab来实现定时任务的调度。该库允许使用类似于crontab文件格式的语法指定任… Django之定时任务django-crontab crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务符号方法解决crontab中文问题管理定时任务注意 crontab Django可以使用第三方库如django-crontab来实现定时任务的调度。该库允许使用类似于crontab文件格式的语法指定任务的执行时间。 GitHub地址https://github.com/kraiz/django-crontab
安装django-crontab
pip install django-crontab注册应用
在settings.py文件中注册django-crontab应用
INSTALLED_APPS [ django_crontab, # 定时任务
]定时时间格式
django-crontab使用Linux下常用的cron调度器进行任务调度。对于时间格式的指定它遵循标准的crontab语法分为五个字段从左到右依次为
* * * * *
- - - - -
| | | | |
| | | | ----- day of the week (0 - 6) (Sunday0) -------------d
| | | ------- month (1 - 12) -------------m
| | --------- day of the month (1 - 31) -------------D
| ----------- hour (0 - 23) -------------H
------------- min (0 - 59) -------------M说明
M: 分钟0-59每分钟用 * 或者 */1 表示
H小时0-230表示0点
D天1-31
m: 月1-12
d: 一星期内的天0~60为星期天星号*所有可能的值例如month字段如果是星号则表示在满足其它字段的制约条件后每月都执行该命令操作逗号,可以用逗号隔开的值指定一个列表范围例如: 1,2,5,7,8,9中杠-可以用整数之间的中杠表示一个整数范围例如: 2-6表示2,3,4,5,6正斜线/可以用正斜线指定时间的间隔频率例如: 0-23/2表示每两小时执行一次。同时正斜线可以和星号一起使用例如*/10如果用在minute字段表示每十分钟执行一次注意 所有值都必须在相应的范围之内否则视为无效。定时时间示例
0 */1 * * * # 每1小时执行一次
0 10 * * * # 每天10点执行
30 19 * * * # 每天19点30分执行
0 10 * * 1 # 每周一10点执行
30 17 * * 5 # 每周五17点30分执行
0 10 1 10 * # 每年10月1日10点执行
0 5,17 * * * # 每天5:00和17:00执行任务
0 3 * * * # 表示每天凌晨三点执行
*/5 * * * * # 表示每隔5分钟执行一次
0 0 1,15 * * # 表示每月1日和15日午夜执行
30 8 1-7 * * # 表示每个月的前7天中每日上午8:30执行设置定时任务
定时任务分为三部分定义任务时间、任务方法、任务日志在settings.py文件配置
CRONJOBS [# 每1分钟执行一次# users:应用名task为py文件名task_job为文件中的函数(*/1 * * * *, apps.users.task.task_job, os.path.join(BASE_DIR, logs/crontab.log)),# 每隔5分钟运行一次(*/5 * * * *, apps.users.task.my_scheduled_job),
]符号方法
django-crontab 支持使用 符号来快速指定一些常见用法例如
reboot在系统启动时运行一次yearly 或 annually每年1月1日 0:00 运行一次monthly每月1日 0:00 运行一次weekly每周日 0:00 运行一次daily 或 midnight每天0:00 运行一次hourly每小时运行一次yearly 或 annually表示每年执行一次相当于 0 0 1 1 *
CRONJOBS [(yearly, myapp.tasks.my_scheduled_job),
]monthly表示每月执行一次相当于0 0 1 * *
CRONJOBS [(monthly, myapp.tasks.my_scheduled_job),
]weekly表示每周执行一次相当于 0 0 * * 0
CRONJOBS [(weekly, myapp.tasks.my_scheduled_job),
]daily 或 midnight表示每天午夜执行一次相当于 0 0 * * *
CRONJOBS [(daily, myapp.tasks.my_scheduled_job),
]hourly表示每小时执行一次相当于0 * * * *
CRONJOBS [(hourly, myapp.tasks.my_scheduled_job),
]解决crontab中文问题
在定时任务中如果出现非英文字符会出现字符异常错误
CRONTAB_COMMAND_PREFIX LANG_ALLzh_cn.UTF-8管理定时任务
1.执行定时任务
# 添加定时任务到系统中
python manage.py crontab add2.取消定时任务
# 移除定时任务
python manage.py crontab remove3.查询激活定时任务
# 显示已激活的定时任务
python manage.py crontab show注意
1.crontab不适用于Windows平台。
2.django-crontab默认使用的是UTC时间与当前系统时区可能不同。 可以在 settings.py 文件中指定CRONTAB_TIMEZONE选项来设置时区例如 # 将时区设置为东八区GMT8
CRONTAB_TIMEZONE Asia/Shanghai