django-crontab实现服务端的定时任务的示例代码


Posted in Python onFebruary 17, 2020

 安装

pip install django-crontab

在Django项目中使用

settings.py

INSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'django_crontab'
)

配置任务

CRONJOBS=(
  # 每一分钟执行一次你的定时函数
  ('*/ * * * *', 'appname.cron.test'),
  # 定时函数输出的内容到指定文件(如果该路径或文件不存在将会自动创建)
  ('0 0 1 * *', 'app名.定时函数所在文件名.定时函数名', '>输出文件路径和名称'),
  # 在12点10分执行命令
  ('10 12 * * *', 'django.core.management.call_command', ['要执行的命令']),
)

官方demo

CRONJOBS = [
  ('*/5 * * * *', 'myapp.cron.my_scheduled_job'),

  # format 1
  ('0  0 1 * *', 'myapp.cron.my_scheduled_job', '>> /tmp/scheduled_job.log'),

  # format 2
  ('0  0 1 * *', 'myapp.cron.other_scheduled_job', ['myapp']),
  ('0  0 * * 0', 'django.core.management.call_command', ['dumpdata', 'auth'], {'indent': 4}, '> /home/john/backups/last_sunday_auth_backup.json'),
]

上述demo参数说明

  • 参数1:定时 例如47 11 * * * 表示每天的11时47分执行
  • 参数2:方法的python模块路径,如果执行django-admin命令,则写django.core.management.call_command
  • 参数3:方法的位置参数列表(默认值:[]),如果执行django-admin命令,则填写所需执行的命令,例如我们在polls中已经定义过的closepoll
  • 参数4:方法的关键字参数的dict(默认值:{})
  • 参数5:执行log存放位置(即重定向到文件,默认:'‘)

其余参数说明

  • CRONTAB_LOCK_JOBS
  • CRONTAB_EXECUTABLE
  • CRONTAB_DJANGO_PROJECT_NAME
  • CRONTAB_DJANGO_MANAGE_PATH
  • CRONTAB_DJANGO_SETTINGS_MODULE
  • CRONTAB_PYTHON_EXECUTABLE
  • CRONTAB_COMMAND_PREFIX
  • CRONTAB_COMMAND_SUFFIX
  • CRONTAB_COMMENT
  • 具体使用方法参考官方使用文档 ,有很详细的说明。

在app中(与views.py同级)新建cron.py文件(文件名不限定)

def test():
  print('django_crontab test')

使用操作

  • python manage.py crontab add

    添加定时任务

  • python manage.py crontab remove 清除定时任务
  • python manage.py crontab show   显示定时任务

扩展知识

前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 周一到周五九点到十点每五分钟触发任务

日志打印

('*/ * * * *', 'appname.cron.test','> appname.txt'),

参考文档

django-crontab github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python和pyqt实现360的CLable控件
Feb 21 Python
Python中asyncore的用法实例
Sep 29 Python
Python中DJANGO简单测试实例
May 11 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
python学习教程之Numpy和Pandas的使用
Sep 11 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
如何让python的运行速度得到提升
Jul 08 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
python中sys模块的介绍与实例
Apr 17 Python
Python实现socket库网络通信套接字
Jun 04 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 #Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 #Python
Python cookie的保存与读取、SSL讲解
Feb 17 #Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 #Python
Python交互环境下打印和输入函数的实例内容
Feb 16 #Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 #Python
基于python实现微信好友数据分析(简单)
Feb 16 #Python
You might like
phpMyAdmin 安装及问题总结
2009/05/28 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
python实现的希尔排序算法实例
2015/07/01 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
python实现词法分析器
2019/01/31 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
如何提高python 中for循环的效率
2020/04/15 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
大学生村官任职感言
2014/01/09 职场文书
西式结婚主持词
2014/03/14 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
水浒传读书笔记
2015/06/25 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang