Django ORM框架的定时任务如何使用详解


Posted in Python onOctober 19, 2017

前言

大家在Django项目开发过程中,是不是也经常遇到这样的场景:需要实现一个定时任务,但又不想脱离Django环境独立运行,如:还需要使用Django的ORM框架操作Models类、日志框架、复用已有配置/方法等等。

大部分同学,初次接触时首先想到的就是使用第三方插件,如:django-celery,django-crontab等等,我也不例外,但实际使用过程,总有诸多不爽,要么感觉大材小用,要么功能支持不完整,要么使用很繁琐。。。

多次尝试摸索后,发现Django已经帮我们实现了该功能,使用起来也是非常的方便易用。那就是利用django-admin自定义命令,使用它,就可以使用ORM框架对model进行操作,如:定时更新数据库,检测数据库状态….. 然后将自定义命令加入到crontab任务列表中即可。

使用方法:

Django为项目中每一个应用下的management/commands目录中名字没有以下划线开始的Python模块都注册了一个manage.py命令,例如:

Django ORM框架的定时任务如何使用详解

_private.py将不可以作为一个管理命令使用。

closepoll.py模块只有一个要求 ? 它必须定义一个Command类并扩展自Basecommand或其子类

Django ORM框架的定时任务如何使用详解

新的自定义命令可以使用python manage.py closepoll 调用。

这样,就可以将新的自定义命令加入到Linux crontab任务列表里实现定时任务的目的了。

总结:

用自定义新命令来实现定时任务,实际开发过程非常简单,但这个思路确实有让我眼前一亮,豁然开朗。到达成功的方法多种多样,只有想不到,没有做不到。能找到最方便,最易用,最能提高效率的方法才是提升开发效率的根本。

好了,以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
python中PIL安装简单教程
Apr 21 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
python 自动重连wifi windows的方法
Dec 18 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
python中时间模块的基本使用教程
May 14 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
python解包用法详解
Feb 17 Python
Pygame Event事件模块的详细示例
Nov 17 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 #Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 #Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 #Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 #Python
python连接数据库的方法
Oct 19 #Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 #Python
python里使用正则的findall函数的实例详解
Oct 19 #Python
You might like
关于时间计算的结总
2006/12/06 PHP
php学习之流程控制实现代码
2011/06/09 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
详解Python中的strftime()方法的使用
2015/05/22 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
python求前n个阶乘的和实例
2020/04/02 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
表扬信范文
2015/05/04 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书