zoukankan      html  css  js  c++  java
  • 如何让django方法自动地定期执行

    实现思路:
    1.首先把需要自动执行的django method写成django command
    2.将自己定义的django command添加到cron中使用cron服务实现定期执行

    Part1 在django工程中添加自定义的django command
    1.我们自己建立的application叫做myapp,首先在这个app目录下,我们需要新建management目录,这个目录里应该包括:__init__.py(内容为空,用于打包)和commands目录,然后在commands目录下包括:__init__.py和mycommand.py ,其中 mycommand.py就是用于我们自定义command的方法,目录的树状结构如下:

    myapp/
        __init__.py
        models.py
        management/
            __init__.py
            commands/
                __init__.py
                mycommand.py
        tests.py
        views.py

    2.书写command的内容mycommand.py,简单示例如下:

    from django.core.management.base import BaseCommand, commandError           
    
    class Command(BaseCommand):
        def handle(self, *args, **options):         
            print "hello world"

    我们把BaseCommand类关联进来,使用command类和handle方法来作为框架,如上,这个command实现的就是打印 “hello world”.

    通过以上我们就可以使用python manage.py mycommand的方式来运行我们自己的django命令了。

    想了解更详细,看这里。 

    Part2 使用cron来定期执行django command

    1、ubuntu下cron开启/关闭/重启
    配置文件一般为/etc/init.d/cron
    启动:sudo /etc/init.d/cron start
    关闭:sudo /etc/init.d/cron stop
    重启:sudo /etc/init.d/cron restart
    sudo service cron restart
    重新载入配置:sudo /etc/init.d/cron reload

    可以用ps aux | grep cron命令查看cron是否已启动

    2、新增 cron 任务
    推荐使用crontab -u 用户名 -e命令添加自定义的任务(编辑的是/var/spool/cron下对应用户的cron文件,在/var/spool/cron下的crontab文件 不可以直接创建或者直接修改,crontab文件是通过crontab命令得到的)。

    在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e 

    a、直接执行命令行
    每隔5秒打印一个字符串“Hello World”,保存至文件/home/linjiqin/HelloWorld.txt中,cron格式如下:

    */5 * * * *  echo "Hello World" >> /home/linjiqin/HelloWorld.txt

    b、shell文件
    每隔5秒调用一次/home/linjiqin/HelloWorld.sh文件,cron 格式如下:

    */5 * * * *  /home/linjiqin/HelloWorld.sh

    文件/home/linjiqin/HelloWorld.sh的内容如下:

    #!/bin/sh
    cd /home/linjiqin/
    echo "Hello World" >> HelloWorld.txt

    注意:记得编辑过后要重启,不然无效。
    sudo service cron restart
    sudo service cron status
    crontab -l #查看cron
    crontab -e #修改cron

    cron常用范例:

    每隔5秒执行一次:*/5 * * * * ?
    每隔1分钟执行一次:0 */1 * * * ?
    每天23点执行一次:0 0 23 * * ?
    每天凌晨1点执行一次:0 0 1 * * ?
    每月1号凌晨1点执行一次:0 0 1 1 * ?
    每月最后一天23点执行一次:0 0 23 L * ?
    每周星期天凌晨1点实行一次:0 0 1 ? * L
    在26分、29分、33分执行一次:0 26,29,33 * * * ?
    每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
  • 相关阅读:
    40 +必不可少的前端Web开发备忘单
    web前端开发必读的HTML5的书籍
    Java String的内存机制
    使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
    CI(CodeIgniter)的"Disallowed Key Characters."异常处理
    开源软件许可协议简介
    读《考拉小巫的英语学习日记》有感
    vi的复制、粘贴、查找、删除等常用命令
    读《马云创业启示录》有感
    jQuery ajax 同步失效?
  • 原文地址:https://www.cnblogs.com/linjiqin/p/3965046.html
Copyright © 2011-2022 走看看