一、编写自定义django-admin命令

注:利用django-admin自定义命令我们可以ORM框架对model进行操作,如:定时更新数据库,检测数据库状态.....

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

polls/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
_private.py
closepoll.py
tests.py
views.py

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

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

from django.core.management.base import BaseCommand, CommandError
from polls.models import Poll
 
class Command(BaseCommand):
    help = 'Closes the specified poll for voting'
    #必须实现的方法
    def handle(self, *args, **options):
        for poll_id in options['poll_id']:
            try:
                poll = Poll.objects.get(pk=poll_id)
            except Poll.DoesNotExist:
                raise CommandError('Poll "%s" does not exist' % poll_id)
 
            poll.opened = False
            poll.save()
 
            self.stdout.write('Successfully closed poll "%s"' % poll_id)

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

二、 django-crontab实现Django定时任务

  • django-crontab安装

    pip install django-crontab
  • django-crontab加入:只需要将django-crontab加入到settings.py的INSTALLED_APPS即可。如下代码:

    INSTALLED_APPS = (
    'django_crontab',
    ...
    )
  • django-crontab配置settings.py中加入django-crontab的命令即可:

    CRONJOBS = [
        ('47 11 * * *', 'django.core.management.call_command', ['closepoll'],{},'>> /var/run.log'),
    ]

    格式:
             参数1:定时 例如47 11 * * * 表示每天的11时47分执行
             参数2:方法的python模块路径,如果执行django-admin命令,则写django.core.management.call_command
             参数3:方法的位置参数列表(默认值:[]),如果执行django-admin命令,则填写所需执行的命令,例如我们在polls中已经定义过的closepoll
             参数4:方法的关键字参数的dict(默认值:{})
             参数5:执行log存放位置(即重定向到文件,默认:'')

  • django-crontab任务加载

    django-crontab任务加载比较简单,只需要运行 python manage.py crontab add 即可
    查看已经激活的任务使用 python manage.py crontab show
    删除已经有的任务使用 python manage.py crontab remove
    如果你修改了任务记得一定要使用 python manage.py crontab add 这个会更新定时任务

【Django】Django 定时任务实现(django-crontab+command)的更多相关文章

  1. Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法

    Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...

  2. Django项目实践4 - Django网站管理(后台管理员)

    http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...

  3. Django项目实践4 - Django站点管理(后台管理员)

    http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...

  4. python2.X现在不能安装Django了:Collecting django Using cached Django-2.0.tar.gz

    使用pip安装django2: pip install django 报错: Collecting django  Using cached Django-2.0.tar.gz    Complete ...

  5. Django学习之六:Django 常用模块导入记忆

    Django 常用模块导入记忆 django相关 1. urls相关操作 from django.urls import path, re_path, include from django.urls ...

  6. Django学习之四:Django Model模块

    目录 Django Model 模型 MODEL需要在脑子里记住的基础概念 区分清楚,必须不能混淆的 class Meta 内嵌元数据定义类 简单model创建实例 数据源配置 接着通过models在 ...

  7. python框架之Django(1)-第一个Django项目

    准备 自己写一个简单的webServer import socket # 生成socket实例对象 sk = socket.socket() # 绑定IP和端口 sk.bind(("127. ...

  8. python 全栈开发,Day69(Django的视图层,Django的模板层)

    昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...

  9. Django 学习第一天——django 基本介绍和环境搭建

    web 应用设计模式(MTV MVC): MTV: M:models 模型:负责业务数据对象与数据库对象: T:templates 模板:负责如何把数据展示给用户: V:views 视图:负责业务逻辑 ...

  10. Pycharm创建Django项目并访问Django

    Pycharm创建Django项目并访问Django 一.Django插件 如果没有Django插件,需要先安装Django插件. 1,首先点击Default Settings,打开设置页面: 2,打 ...

随机推荐

  1. Apache RewriteRule

    1.Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块 ...

  2. ppp数据帧的格式

    参考http://blog.chinaunix.net/uid-11639156-id-2379044.html

  3. local认证

    文件路径 用途 示例 备注 #gedit /usr/local/etc/raddb/sites-available/default #gedit /usr/local/etc/raddb/sites- ...

  4. Android 中dp和px

    dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如: 在320x480分辨率,像素密度为160,1dp=1px 在480x800分辨率,像素密度为240,1dp=1.5px 计算公式: 1dp* ...

  5. 《Eclipse中的一些快捷键》

    1,window--首选项--Java--templates 自定义模板. 2,快捷键. 2.1 alt+/ 内容辅助. 2.2 ctrl+1 : 对小红×的提供解决法案.大红×(代码错误)必须修改代 ...

  6. Android数据存储-读取内部存储空间数据

    内部存储空间的默认位置 data/data/应用名称 写数据,获取FileOutPutStream的方式 1.直接写死路径的方式 FileOutputStream fos = new FileOutp ...

  7. 普通硬件就能破解GSM A5加密算法

    如果你还在使用基于早期信号标准的GSM手机,那么你最好在使用手机的过程中小心一点了.因为根据国外媒体的最新报道,安全研究专家通过测试发现,他们只需要使用三张NVIDIA GeForce GTX690显 ...

  8. 用VC调用EXCEL简单代码(转载自越长大越孤单,觉得很好)

    首先在stdafx.h里加入对IDispatch接口提供支持的头文件: #include <afxDisp.h> 再在应用程序类的InitInstance()函数里加入: AfxOleIn ...

  9. linux命令:du

    1.命令介绍: du用来查看文件和目录的使用空间. 2.命令格式: du [选项] 文件 3.命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以b ...

  10. C#通过反射进行枚举描述相关操作

    C#可以通过反射,来获取枚举的描述信息或通过描述信息获取到指定类型的枚举 /// <summary> /// 获取枚举描述 /// </summary> /// <par ...