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实现处理管道的方法
Jun 04 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
python 为什么说eval要慎用
Mar 26 Python
python gdal安装与简单使用
Aug 01 Python
基于Python中random.sample()的替代方案
May 23 Python
解决pytorch 数据类型报错的问题
Mar 03 Python
Python中tkinter的用户登录管理的实现
Apr 22 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
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php对数组排序代码分享
2014/02/24 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
javascript五图轮播切换实用版
2012/08/17 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python中使用ElementTree解析XML示例
2015/06/02 Python
python正则表达式之作业计算器
2016/03/18 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
利用python生成照片墙的示例代码
2020/04/09 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
幼儿园运动会口号
2014/06/07 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python