方法一:

  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. Web前端工程师常去的15个技术网站

    1.CSDN 网址:https://www.csdn.net/ 简介: CSDN (Chinese Software Developer Network) 创立于1999年,是中国最大的IT社区和服务 ...

  2. Mina 系列(二)之基础

    Mina 系列(二)之基础 Mina 使用起来多么简洁方便呀,就是不具备 Java NIO 的基础,只要了解 Mina 常用的 API,就可以灵活使用并完成应用开发. 1. Mina 概述 首先,看 ...

  3. 使用kindeditor 4.1.7 编辑器 注意事项,上传图片失败 问题 ,

    <script charset="utf-8" src="editor/kindeditor.js"></script> <scr ...

  4. 《Just for Fun》---读后感

    <Just for Fun>本书是Linux之父林纳斯自传,书名的意思是:只是为了好玩.主要是讲了林纳斯的人生经历,以及Linux的诞生过程.Linux从一个终端仿真器到一个世界瞩目的操作 ...

  5. PHP 用 ZipArchive 打包指定文件到zip供用户下载

    Ubuntu需安装zlib sudo apt-get install ruby sudo apt-get install zlib1g zlib1g.dev   Windows需开启php_zip.d ...

  6. KBMMW 4.70.00 发布

    We are happy to announce the release of kbmMW v. 4.70.00 Professional and Enterprise Edition. kbmMW ...

  7. 2018.09.02 Atcoder Regular Contest 102简要题解

    比赛传送门 T1 Triangular Relationship 分析之后发现有两种情况: 1. n为奇数,那么所有数都是k的倍数. 2. n为偶数,那么所有数都是k/2的倍数. 然后就可以愉快A题了 ...

  8. yii2 ActiveRecord的生命周期

    AR的生命周期 http://www.yii-china.com/doc/guide/db_active_record.html 理解AR的生命周期对于你操作数据库非常重要.生命周期通常都会有些典型的 ...

  9. phalapi框架where条件查询

    // WHERE name = 'dogstar' AND age = 18 $user->where(array('name' => 'dogstar', 'age' => 18) ...

  10. C++之类和对象的使用(二)

    析构函数 析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一系列清理工作,使这部分内存可以被程序分配给新对象使用.对象生命周期结束,程序就自动执行析构函数来完成这些工作. 析构函数是一种 ...