方法一:

  Django搭建的服务器一般都用作WEB网站进行访问,通常的形式是用户访问网站或点击按钮发送请求,Django检测到请求后进行相应的试图函数处理后返回页面给用户。

  但是,我们有时会需要有一些后台自动运行的任务,即使没有用户请求时也要自动运行,或者是定时运行或者是不断运行,怎么做呢?这里用到一个模块APScheduler这样的一个库,我们需要先安装一下。

pip install apscheduler==2.1.2  

安装完成后,在Django应用目录下的urls.py文件中引入这个模块和写好的想要被自动执行的函数

from apscheduler.scheduler import Scheduler  

# 假设我要执行的函数时app01项目下的views.py中的func_01函数
from app_01.views import func_01

注:这个func_01方法可以定义在views.py文件中,也可以直接把方法体写在url.py中

引入好之后的具体代码为: 

sched = Scheduler()  #实例化,固定格式

# 装饰器,seconds=60意思为该函数为1分钟运行一次
@sched.interval_schedule(seconds=60)
def mytask():
func_01() sched.start() #启动该脚本

转发自:http://www.bubuko.com/infodetail-2610004.html

附:Python APSchedule安装使用与源码分析

方法二:

实现思路:
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):
  # handle()该方法必须实现
  def handle(self, *args, **options): 
    print "hello world" 我们把BaseCommand类关联进来,使用command类和handle方法来作为框架,如上,这个command实现的就是打印 "hello world".
通过以上 我们就可以使用python manage.py mycommand 的方式来运行我们自己的django命令了。 想了解更详细,看这里。 第二步:使用cron来定期执行django command 首先要确定自己的cron服务是开启的:
sudo service crond start
#sudo service crond stop
#sudo service crond restart 将django command我写了一个简单的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用来存输出信息。
0 6,12,18 * * 1-5 python $p/manage.py mycommand > $p/djangocron.log 2>&1
这一句写入djangocron文件,就是cron的配置了 0 6,12,18 * * 1-5这几个参数未改动的格式是 * * * * * 五个参数使用空格隔开分别表示 分钟 小时 天 月 周,我这里的配置就是每个周一到周五的6点0分 12点0分 18点0分执行后面的命令;
后面的命令 python $p/manage.py mycommand,$p是路径的引用,其实就是 python manage.py mycommad. 
小箭头 > $p/djangocron.log 2>&1的意思就是 将命令的输出结果转存到djangocron.log文件,2>&1的意思是同时将错误信息也存入djangocron.log文件。
crontab djangocron的作用是将我们写的djangocron文件在crontab中装载,装载后可以:
crontab -l #查看
crontab -e #修改
只要调整cron前面设置的时间参数,就可以测试自己的命令有没有成功执行,查看djangocron.log来查看输出和error。

Django 框架中定时触发脚本的更多相关文章

  1. Python中的Django框架中prefetch_related()函数对数据库查询的优化

    实例的背景说明 假定一个个人信息系统,需要记录系统中各个人的故乡.居住地.以及到过的城市.数据库设计如下: Models.py 内容如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  2. Django框架中的Context使用

    Django框架中的Context使用 2017年11月09日 20:01:09 aweilark 阅读数:1113   转载自:http://www.aichengxu.com/python/606 ...

  3. 分布式队列celery 异步----Django框架中的使用

    仅仅是个人学习的过程,发现有问题欢迎留言 一.celery 介绍 celery是一种功能完备的即插即用的任务对列 celery适用异步处理问题,比如上传邮件.上传文件.图像处理等比较耗时的事情 异步执 ...

  4. Python的Django框架中forms表单类的使用方法详解

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  5. Python的Django框架中的Cookie相关处理

    Python的Django框架中的Cookie相关处理 浏览器的开发人员在非常早的时候就已经意识到. HTTP's 的无状态会对Web开发人员带来非常大的问题,于是(cookies)应运而生. coo ...

  6. Python的Django框架中的Context使用

    Python的Django框架中的Context使用 近期整理些Python方面的知识,一旦你创建一个 Template 对象,你能够用 context 来传递数据给它. 一个context是一系列变 ...

  7. Django框架中使用Echart进行统计的SQL语句

    最近想用Echart做数据统计的图形显示,数据来源是MySQL数据库,自然需要根据不同的搜索条件筛选出表中的数据,用比较多的就是时间的参数吧! 常用的mysql时间的条件进行检索的SQL语句: 数据表 ...

  8. Python的Django框架中的URL配置与松耦合

    Python的Django框架中的URL配置与松耦合 用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件. 但如果要处理一个很大的文本,比 ...

  9. Django框架中logging的使用

    Django框架中logging的使用 日志是我们在项目开发中必不可少的一个环节,Python中内置的logging已经足够优秀到可以直接在项目中使用. 本文介绍了如何在DJango项目中配置日志. ...

随机推荐

  1. Codeforces 600A. Extract Numbers 模拟

    A. Extract Numbers time limit per test: 2 seconds memory limit per test: 256 megabytes input: standa ...

  2. Zookeeper 系列(二)安装配制

    Zookeeper 系列(二)安装配制 一.Zookeeper 的搭建方式 Zookeeper 安装方式有三种,单机模式和集群模式以及伪集群模式. 单机模式 :Zookeeper 只运行在一台服务器上 ...

  3. 去掉字符串前后的空格和Tab

    <script language=Javascript>function String.prototype.Trim() {return this.replace(/(^\s*)|(\s* ...

  4. python协程函数、递归、匿名函数与内置函数使用、模块与包

    目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a. ...

  5. EPLAN 软件平台中的词“点“大全

    1. 中断点(Interruption Point):     在原理图绘制时,如果当前绘图区域的空间不足,需要转到其它页面继续绘制,而这两页之间存在连续的“信息流“时,可以使用“中断点“来传递这种“ ...

  6. [原创汉化] 价值990美元的顶级专业数据恢复软件O&O DiskRecovery 11(技术员版)汉化绿色版

    百度没搜索到11有汉化版的,有空就把它汉化了,大部分借鉴的是以前汉化版的词条.另外,顺便做了个二合一的单文件版给有需要的朋友. 运行环境: 可用于 Windows 2000/XP/2003/Vista ...

  7. 按条件设置gridcontrol 单元格属性

    等价代码设置:(注意这里使用都是FieldName, 即绑定对象的字段名) var cn = new StyleFormatCondition(FormatConditionEnum.Expressi ...

  8. java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java he

    tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:) 最简单的解决办法: 在ecl ...

  9. Yarn上运行spark-1.6.0

    目录 目录 1 1. 约定 1 2. 安装Scala 1 2.1. 下载 2 2.2. 安装 2 2.3. 设置环境变量 2 3. 安装Spark 2 3.1. 下载 2 3.2. 安装 2 3.3. ...

  10. javascript实现责任链设计模式

    javascript实现责任链设计模式 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿这条链传递该请求,直到有一个对象处理他为止. 这是Gof的定义 ...