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數組

相關文章
相關標籤/搜索