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中的lstrip()方法使用简介
May 19 Python
python控制台中实现进度条功能
Nov 10 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
tensorflow识别自己手写数字
Mar 14 Python
详解Django之auth模块(用户认证)
Apr 17 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
python字典的常用方法总结
Jul 31 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
Python super()函数使用及多重继承
May 06 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 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
Home Coffee Roasting
2021/03/03 咖啡文化
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
php控制文件下载速度的方法
2015/03/24 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
Javascript的一种模块模式
2008/03/22 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Python 文件读写操作实例详解
2014/03/12 Python
Python实现的几个常用排序算法实例
2014/06/16 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
django模板结构优化的方法
2019/02/28 Python
python实现代码统计程序
2019/09/19 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
python 爬取小说并下载的示例
2020/12/07 Python
html5的localstorage详解
2017/05/09 HTML / CSS
学生自我鉴定模板
2013/12/30 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
教师个人自我鉴定
2014/02/08 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang