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

yipeiwu_com5年前Python基础

前言

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

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

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

使用方法:

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

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

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

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

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

总结:

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

好了,以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对【听图阁-专注于Python设计】的支持。

相关文章

Python的gevent框架的入门教程

Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。 gevent是第三方库,通过greenlet实现协程,其基本...

python读取文件名并改名字的实例

第一版,能实现,但最后发现文件的顺序改变了: import os def reename(): nm=1 pathh="/home/huangyaya/file/imag...

Python中的四种交换数值的方法解析

Python中的四种交换数值的方法解析

这篇文章主要介绍了Python中的四种交换数值的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 交换两个变量的值方法,这个面试...

Python pyinotify模块实现对文档的实时监控功能方法

0x01 安装pyinotify >>> pip install pyinotify >>> import pyinotify 0x02 实现对...

Python使用面向对象方式创建线程实现12306售票系统

目前python 提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一...