最近用Django写了一个项目,但是有一个地方需要应用在后台自动定期执行检查,并存入数据库,如果单纯的写Python程序的话不能很好的跟django的结合在一起,写起来也和麻烦,查找资料的时候发现了django有一个功能,就是django command,通过这个就可以使用django的manage.py去执行命令了。

参考:资料1   资料2   资料3

实现思路:

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

一、在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.mycommand.py的command内容书写,简单示例如下:

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命令了。
想了解更详细,请参考资料3。

二、使用cron来定期执行django command

cron的用法在这里不作详细介绍,具体怎么添加修改cron,自行查阅相关资料。不过添加cron命令有很多种实现方法,现整理如下:

1、最简单的一种,直接在crontab添加如下命令:

*/5 * * * * root cd /home/www/myproject/myapp && python manage.py mycommand

  在这里直接执行python /home/www/myproject/manage.py mycommand是不行的,具体为什么还请大神指点。

2、可以写一个shell脚本,然后执行,给大家参考:

#!bin/bash

p=$PWD
touch $p/djangocron
touch $p/djangocron.log
echo "0 6,12,18 * * 1-5 python $p/manage.py mycommand > $p/djangocron.log 2>&1" > djangocron
crontab djangocron
crontab -l

解释一下:

  这个脚本放在与manage.py同一目录下,以便p=$PWD获取能用的当前路径。
  touch先建立一个djangocron文件,用于存放crontab的命令,建立的djangocron.log用来存输出信息。

3、

4、

如何利用Cron让django应用定期执行的更多相关文章

  1. 如何让django方法自动地定期执行

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

  2. django定期执行任务

    要在django项目中定期执行任务,比如每天一定的时间点抓取数据,刷新数据库等,可以参考stackoverflow的方法,先编写一个manage.py命令,然后使用crontab来定时执行这个命令. ...

  3. Linux 通过cron定期执行 php文件(转)

    Linux 通过cron定期执行 php文件 补充几点: 1. 要在php文件头加上解释器的路径,通常是 #!/usr/bin/php 2. 授予要执行的php文件执行权限   chmod a+x x ...

  4. LINUX 命令定期执行可执行文件

    linux命令将nodejs文件变成可执行文件 在linux中一般我们在运行node文件时用的命令为: node example.js 首先.删除文件后缀,在linux命令下添加可执行权限 mv ex ...

  5. Linux下设置定期执行脚本

    下面针对的是非ubuntu环境,会在文章末尾介绍ubuntu的一些区别. 在Linux下,经常需要定期的执行一些脚本从而来实现一些功能. 在Linux下我们用crontab来实现定期的执行脚本这个功能 ...

  6. Linux crontab定时器设置(定期执行java程序)(转)

    Crontab 语法 Crontab语法一个crontab文件用五个段来定义:天,日期和时间,和一个要定期执行的命令代码. *    *  *  *   *  command to be execut ...

  7. crontab定期执行shell脚本

    [场景]: 需要定期运行Hadoop的MapReduce [解决办法]: 编写一个运行MapReduce的Shell脚本.然后使用crontab配置定时任务. [Shell脚本] #!/usr/bin ...

  8. linux进程管理-定时定期执行任务

     0.计划任务的命令: at 安排作业在某一时刻执行 batch 安排作业在系统负载不重时执行 crontab 安排周期性运行的作业 1.at命令用法: 安排命令或者多个命令在指定的时间运行一次 语法 ...

  9. 利用cron监视后台进程状态

    利用cron监视后台进程状态 http://blog.csdn.net/dyx810601/article/details/72967758 1. 利用cron监视后台进程状态,如果进程死掉或服务器重 ...

随机推荐

  1. liunx之:ln命令

    linux  一个很重要的命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是: ln -s  源文件 目标文件    -s 是 symbolic的意思 ...

  2. Visibility属性控制元素的显示和隐藏

    w3cschool案例: <!DOCTYPE html> <html> <body> <p id="p1">这是一段文本.</ ...

  3. .NET设计规范————类型设计规范

    类型设计规范 从CLR的角度看,只有值类型和引用类型两种类型,但是从框架设计的角度我们把类型从逻辑上分了更多的组.如下所示: 类是引用类型的一般情况,占了框架中的大多情况,类的流行归于它支持面向对象的 ...

  4. 6、Samba 服务器配置

    1.安装samba服务 [root@rhel6_80 samba]# yum -y install samba #安装samba [root@rhel6_80 samba]# rpm -qa |gre ...

  5. 利用百度云免费备份SQL数据库

    我们开发了一个会员管理系统,随着使用的人越来越多,异地备份数据库就显得十分重要,万一硬盘出问题了怎么办呢.所以就着手做这个工作. 首先呢,找到了几个专门用来提供备份数据库的网站,一年好几百,好贵.放弃 ...

  6. [2015.07.27]万峰图片批量处理专家 v8.6

    万峰图片批量处理专家,界面简洁易用,功能强大实用.支持多种处理任务同时按顺序执行,真正的批量图片,批量效果处理.支持图片批量自定义的放大缩小,旋转或者翻转,支持图片格式批量转换.支持图片批量文字水印, ...

  7. C++STL算法函数总结

    容器自己定义了的算法vector:swaplist:swap,merge,splice,remove,remove_if,reverse,uniquedeque:swapmap,set,multise ...

  8. 黄聪:HtmlAgilityPack中SelectSingleNode的XPath和CSS选择器

    XPath和CSS选择器 原文:http://ejohn.org/blog/xpath-css-selectors 最近,我做了很多工作来实现一个同时支持XPath和CSS 3的解析器,令我惊讶的是: ...

  9. C#动手实践:Kinect V2 开发(1):初步了解及环境搭建

    该分享使用的是Kinect 二代,C#做为编程语言,请知悉 Kinect是微软在2009年6月2日的E3游戏展上,正式公布的XBOX360体感周边外设.它是一种3D体感摄影机,同时它导入了即时动态捕捉 ...

  10. 用git管理自己读的书

    福昕阅读器,可以方便地做书签和备注.使用git去管理图书和示例代码,一方面能够很好地保存这些资料,方便查找:另外一方面,无论在家,还是在公司,都能很好地同步自己学习的进度. 福昕阅读器5(视图--&g ...