Django------详解django-apscheduler的使用方法

1.安装模块python

pip install django-apscheduler

2.配置mysql

INSTALLED_APPS = [ ... 'django_apscheduler', ... ]
  • 数据迁移
python manage.py migrate

3.查看配置结果sql

 

  • django_apscheduler_djangojob:用于存储任务的表格  job_state: 我猜是将任务具体的执行代码和参数进行序列化后存在了这里

  • django_apscheduler_djangojobexecution:用于存储任务执行状态的表格  status: 执行状态 duration: 执行了多长时间 exception: 是否出现了什么异常

 

 4.使用:在任意view.py中实现代码数据库

import time
from apscheduler.schedulers.background import BackgroundScheduler
from django.shortcuts import render
from django_apscheduler.jobstores import DjangoJobStore, register_job, register_events

from blog.robin_server.paramiko_test import SSHConnection

try
: # 实例化调度器 scheduler = BackgroundScheduler() # 调度器使用DjangoJobStore() scheduler.add_jobstore(DjangoJobStore(), "default") # 设置定时任务,选择方式为interval,时间间隔为10s # 另外一种方式为天天固定时间执行任务,对应代码为: # @register_job(scheduler, 'cron', day_of_week='mon-fri', hour='9', minute='30', second='10',id='task_time') @register_job(scheduler, "interval", seconds=10, id="test_hjy") def my_job(): # 这里写你要执行的任务 obj = SSHConnection() obj.run() register_events(scheduler) scheduler.start() except Exception as e: print(e) # 有错误就中止定时器 scheduler.shutdown()

 

参数

  • scheduler: 指定调度器
  • trigger: 任务执行的方式,共有三种:'date'、'interval'、'cron'。
    • 'date' + 'run_date' 的参数组合, 能实现单次任务。 例子:2019-07-07 22:49:00 执行任务 @register_job(scheduler, 'date', id='test', run_date='2019-07-07 22:49:00') 注:在亲测时,执行完任务会报错,缘由时执行完任务后会去mysql中删除djangojob表中的任务。可是djangojobexecution表记录着执行结果,有外键关联着djangojob表,因此删除时显示有外键约束错误。可是任务会正常执行,执行以后也会正常删除。
    • 'interval' + 'hours' + 'minutes' + ..... 的参数组合,能实现间隔性任务。 例子:每隔3个半小时执行任务 还有seconds,days参数能够选择 注:若是任务须要执行10秒,而间隔设置为1秒,它是不会给你开10个线程同时去执行10个任务的。它会错过其余任务直到当前任务完成。
    • @register_job(scheduler, 'interval', id='test', hours=3, minutes=30)
    • 'cron' + 'hour' + 'minute'+...的参数组合,能实现cron类的任务。 例子:天天的8点半执行任务 还有day,second,month等参数能够选择。
    • @register_job(scheduler, 'cron', id='test', hour=8, minute=30)
  • id: 任务的名字,不传的话会自动生成。不过为了以后对任务进行暂停、开启、删除等操做,建议给一个名字。而且是惟一的,若是多个任务取一个名字,以前的任务就会被覆盖。
  • args: list类型。执行代码所须要的参数。
  • next_run_time:datetime类型。开始执行时间。若是你如今建立一个定时任务,想3天后凌晨三点半自动给你女友发微信,那就须要这个参数了。

 5.运行结果django

 

 

 参考博客:https://cloud.tencent.com/developer/article/1585026数组

相关文章
相关标签/搜索