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使用cookie库操保存cookie详解
Mar 03 Python
Django返回json数据用法示例
Sep 18 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
python爬取指定微信公众号文章
Dec 20 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
python中比较两个列表的实例方法
Jul 04 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
Python版中国省市经纬度
Feb 11 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 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
杏林同学录(七)
2006/10/09 PHP
追求程序速度,而不是编程的速度
2008/04/23 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
JS event使用方法详解
2008/04/28 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
JavaScript 异步调用
2017/10/25 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
python读写文件write和flush的实现方式
2020/02/21 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
5s推行计划书
2014/05/06 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
先进党支部事迹材料
2014/12/24 职场文书
优秀团员事迹材料
2014/12/25 职场文书
门卫管理制度范本
2015/08/05 职场文书
入党心得体会
2019/06/20 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android