Django 框架中制作定时触发脚本

Posted lowmanisbusy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 框架中制作定时触发脚本相关的知识,希望对你有一定的参考价值。

方法一:

  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随Linux开机自动运行

准备好要自启的脚本auto.py

用root权限编辑以下文件
sudo vim /ect/rc.local

在exit 0上面编辑启动脚本的命令(编辑rc.local 在其中的 exit 0 上面添加这一行代码)
/usr/bin/python3.5 /home/edgar/auto.py > /home/edgar/auto.log

最后重启Linux,脚本就能自动运行并打印日志了。

二、让Python脚本定时启动

用root权限编辑以下文件
sudo vim /etc/crontab

在文件末尾添加以下命令
2 * * * * root /usr/bin/python3.5 /home/edgar/auto.py > /home/edgar/auto.log
以上代码的意思是每隔两分钟执行一次脚本并打印日志。

三、crontab编写解释

基本格式

* * * * * user command
分 时 日 月 周 用户 命令

四、举例说明
1、每分钟执行一次 
* * * * * user command

2、每隔2小时执行一次 
* */2 * * * user command (/表示频率)

3、每天8:30分执行一次
30 8 * * * user command

4、每小时的30和50分各执行一次 
30,50 * * * * user command(,表示并列)

4、每个月的3号到6号的8:30执行一次
30 8 3-6 * * user command (-表示范围)

5、每个星期一的8:30执行一次
30 8 * * 1 user command (周的范围为0-7,0和7代表周日)

 

 

以上是关于Django 框架中制作定时触发脚本的主要内容,如果未能解决你的问题,请参考以下文章

Django框架中使用定时任务APScheduler

曼城新闻情报站Django框架的爬虫

WinCC全局脚本的定时触发?

Django中通过定时任务触发页面静态化的方式

django中运行定时任务脚本

Django-Apscheduler 定时任务