Ⅰ:官网
GitHub地址:django-crontab
优点:接入也很方便,功能也很全面
缺点:存在一些坑和无法解决的问题,使用时需注意
注意:django-crontab只能基于linux环境使用
Ⅱ:基本使用
- 安装
pip install django-crontab
- 注册APP,配置到settings INSTALLED_APPS
INSTALLED_APPS = ( 'django_crontab', ... )
- 编写定时任务
在Django的APP下面新建一个MyCrontab/crontab.py文件,把需要执行的定时任务放进去# 每隔5分钟运行一次 def my_scheduled_job(): pass # 每隔6小时运行一次 def test_scheduled_job(): pass
- 在settings中增加CRONJOBS配置
CRONJOBS = [ # 每隔5分钟运行一次 ('*/5 * * * *', 'MyCrontab.crontab.my_scheduled_job'), # 每隔6小时运行一次 ('*/360 * * * *', 'MyCrontab.crontab.test_scheduled_job'), ]
- 基本语法
# ┌───────────── minute (0 - 59) # │ ┌───────────── hour (0 - 23) # │ │ ┌───────────── day of the month (1 - 31) # │ │ │ ┌───────────── month (1 - 12) # │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday; # │ │ │ │ │ 7 is also Sunday on some systems) # │ │ │ │ │ # │ │ │ │ │ # * * * * * <command to execute> #所有的值都必须在相应的范围之内,否则视为无效。在填值区域内可以是*也可以是以”,”分隔的一组值。值可以是一个数据也可以是用连接符连起来的两个数(表示范围)。 #星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 #逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” #中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” #正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。 注:日期的格式可以是星期,也可以是一个月中的天。假如两个都有值,则在这两个时间都会执行。
- 基本格式
定时执行自定义函数
要求:cron计时通常格式
要求:Django项目模块路径下待执行定时任务
可选:将执行结果或日志写入文件的路径CRONJOBS = [ # ('*/1 * * * *', 'app名.定时函数所在的py文件名.定时函数名', '>> 输出文件路径和名称') # 每1分钟执行restart_pm2函数,并将执行中的返回的内容全部打印到crontab.log文件中 ('*/1 * * * *', 'app1.tasks.test11', '>>/home/tianchi/apps/ecology/logs/crontab.log'), ]
定时执行自定义命令
要求:cron计时通常格式
要求:python模块路径下待执行定时任务
可选:方法的位置参数列表(默认值:[])
可选:方法的关键字参数的dict(默认值:{})
可选:将执行结果或日志写入文件的路径CRONJOBS = [ # 每1分钟执行django的自定义命令,并将执行中的返回的内容全部打印到crontab.log文件中 # ('*/1 * * * *', 'django.core.management.call_command', ['命令名'], {"参数名": "参数值"}, '>>输出文件路径和名称'), ('*/1 * * * *', 'django.core.management.call_command', ['mycommand2'], {"param": "mycommand2_test"}, '>>/home/tianchi/apps/ecology/logs/crontab.log') ]
Ⅲ:常用命令
添加并开启定时任务
python manage.py crontab add
python环境查看定时任务
python manage.py crontab show
删除定时任务
python manage.py crontab remove
查看定时任务
sudo crontab -l
Ⅳ:填坑记
# corn 错误写法:
* */1 * * * #错误的每隔一小时执行一次,事实上每分钟执行一次
0 */3 * * * #错误的每隔3小时执行一次写法,实际上每整3小时的0分执行一次。也就是说,它会在每天的3点、9点、12点...等3的整数倍时间点来执行
# 正确写法:
*/60 * * * * #每60分钟即每小时执行一次
*/180 * * * * #正确的每隔3小时执行一次写法
2 comments
看的我热血沸腾啊www.jiwenlaw.com
看的我热血沸腾啊https://www.ea55.com/