Django定时任务Django-crontab的使用
在使用的django做测试平台时,,多多少少都会遇到需要定时任务的功能,比如定时执行任务,检查订单之类
的。可能是一段时间,比如每隔 10分钟执行一次,也可能是定点时间,比如 14:00 执行,也可能是长时
间,比如每周几,每个月的哪一天等。查看了一下相关资料, django 定时任务 django-crontab 库比
较多教程和资料,虽然 star 数才五百,但是 API 接口比较简单,接入也很方便,功能也很全面,当然,
也存在一此无法解决的问题,使用时需要注意的
- 使用
pip install django-crontab - 添加配置文件到settings.py INSTALLED_APPS 中,
INSTALLED_APPS = (
'django_crontab',
)
- 编写定时函数
定时任务分为两类,一种是执行自定义的manage.py,另一种是执行自定义函数
在Django中的app中新建一个myapp/cron.py 文件,把需要定时的代码放进去
def my_schedule_job():
pass
- 在setting.py中增加
CEONJOBS配置
CRONJOBS = [
('*/5 * * * *', 'myapp.cron.my_scheduled_job')
]
也可以定义一些关键字参数,有2种格式:
格式1:
要求:cron计时通常格式(有关更多示例,请参阅 Wikipedia 和 crontab.guru)
要求:python模块路径下待执行定时任务
可选:特定于定时任务的后缀(例如,将 out/err 重定向到文件,默认值为'')
CRONJOBS = [
('*/1 * * * *',
'appname.test_crontab.test','>>/home/python/test_crontab.log')
]
注意: >> 表示追加写入, > 表示覆盖写入。
格式2:
要求:cron计时通常格式
要求:python模块路径下待执行定时任务
可选:方法的位置参数列表(默认值:[])
可选:方法的关键字参数的dict(默认值:{})
可选:特定于定时任务的后缀(例如,将 out/err 重定向到文件,默认值为'')
CRONJOBS = [
('*/5 * * * *', 'myapp.cron.other_scheduled_job', ['arg1', 'arg2'],
{'verbose': 0}),
('0 4 * * *', 'django.core.management.call_command', ['clearsessions']),
]
对于熟悉 Linux 中定时任务 crontab 的同学可能对上面第一个参数的语法很亲切。上面表示每隔1分钟
执行一次代码。
Linux 中的定时任务 crontab 的语法如下:
* * * * * command
分钟(0-59) 小时(0-23) 每个月的哪一天(1-31) 月份(1-12) 周几(0-6) shell脚本或者命令
* 代表所有的取值范围的数字
/ 代表每的意思,*/5 就是5个单位
- 代表从某个数字到某个数字
,分来几个离散的数字
---------------------------
每两个小时 0 */2 * * *
晚上11点到早上8点之间每两个小时,早上8点 0 23-7,8 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3
1月1日早上4点 0 4 1 1 *
0 6 * * * commands >> /tmp/test.log # 每天早上6点执行, 并将信息追加到test.log中
0 */2 * * * commands # 每隔2小时执行一次
- 添加并启动定时任务
# 添加并启动定时任务
python manage.py crontab add
其他命令
#显示当前的定时任务
python manage.py crontab show
#删除所有定时任务
python manage.py crontab remove
总结
测试平台执行测试用例时,可以借助jenkins之类的CI/CD工具,也可以使用定时任务crontab,作为测试开发工程师,我们可能没有权限去操作服务器,那么我们就只能使用django-crontab,在指定时间(循环执行)测试用例
Django定时任务Django-crontab的使用的更多相关文章
- django 定时任务 django-crontab 的使用
成功例子如下图: 1.前言 在做 django 开发需求时,多多少少都会遇到需要定时任务的功能,比如定时执行任务,检查订单之类的.可能是一段时间,比如每隔 10分钟执行一次,也可能是定点时间,比如 1 ...
- 【Django】Django 定时任务实现(django-crontab+command)
一.编写自定义django-admin命令 注:利用django-admin自定义命令我们可以ORM框架对model进行操作,如:定时更新数据库,检测数据库状态..... Django为项目中每一个应 ...
- Django 定时任务实现(django-crontab+command)
一.编写自定义django-admin命令 注:利用django-admin自定义命令我们可以ORM框架对model进行操作,如:定时更新数据库,检测数据库状态..... Django为项目中每一个应 ...
- Django settings — Django 1.6 documentation
Django settings - Django 1.6 documentation export DJANGO_SETTINGS_MODULE=mysite.settings django-admi ...
- Python之路【第二十三篇】:Django 初探--Django的开发服务器及创建数据库(笔记)
Django 初探--Django的开发服务器及创建数据库(笔记) 1.Django的开发服务器 Django框架中包含一些轻量级的web应用服务器,开发web项目时不需再对其配置服务器,Django ...
- Django 初探--Django的开发服务器及创建数据库(笔记)
1.Django的开发服务器 Django框架中包含一些轻量级的web应用服务器,开发web项目时不需再对其配置服务器,Django提供的内置服务器可以在代码修改时自动加载,从而实现网站的迅速开发. ...
- linux下系统定时任务配置----crontab(mysql定时备份)
crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任 ...
- 定时任务之crontab命令
1.简介 crontab用于设置周期性被执行的命令 Linux系统中Linux调动工作分为两大类: 1.系统执行的工作:系统周期性所要执行的工作,如备份系统数据.清理缓存 2.个人执行的工作:某个用户 ...
- Django之django模型层二多表操作
一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. ...
随机推荐
- 【dvwa攻略】安全等级low——爆破
首先登录dvwa,进入到爆破功能模块,在这里是有可以输入账号密码的框的 打开burpsuite,抓包以后发现是get方法 通过在这里输入账号.密码 username password 然后再通过get ...
- javascript生成一棵树
问题描述 输入一串父子节点对的数组,利用其构造一颗树 输入 const arr = [ {id:1,parentid:null}, {id:2,parentid:1}, {id:3,parentid: ...
- windodws pyusb hub端口对应连接的usb设备
源码: 1 #!/usr/bin/python 2 import sys 3 import usb.core 4 # find USB devices 5 dev = usb.core.find(fi ...
- Oracle 常用运维命令整理
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 一.oracle建库与删库命令 (1)oracle11g ...
- C#中的接口和类有什么异同
不同点: 1. 不能直接实例化接口 2. 接口中的成员不能用访问修饰符修饰(默认public) 3. 接口不包含方法的实现 4. 接口可以多继承,类只能单继承. 5. 类定义可在不同的源文件之间进行拆 ...
- Blazor和Vue对比学习(基础1.6):祖孙传值,联级和注入
前面章节,我们实现了父子组件之间的数据传递.大多数时候,我们以组件形式来构建页面的区块,会涉及到组件嵌套的问题,一层套一层.这种情况,很大概率需要将祖先的数据,传递给子孙后代去使用.我们当然可以使用父 ...
- 软件开发架构,网络编程简介,OSI七层协议,TCP和UDP协议
软件开发架构 什么是软件开发架构 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯. 4.在实现阶段,这些抽 ...
- 一文学会Java的交互式编程环境jshell
什么是交互式编程环境?重点词交互,在这样的编程环境中,你每输入一行代码,环境都会给你一个反馈,这就是交互式的编程环境.这种编程环境并不太适合工程化的复杂性需求,但在一些快速验证.简单计算之类的场景下还 ...
- Hadoop安装学习(第二天)
学习任务: 1.对VMnet8进行设置 2.配置主机名,对host文件进行编辑 3.将Hadoop文件以及jdk通过Xshell7传输到Linux系统 4.设置免密登录
- vue同时监听多个参数变化
computed: { // 同时监听多个参数 toWatch() { const { params1, params2 } = this.observeObj; return { params1, ...