django-apscheduler和apscheduler的安裝和示例

APScheduler(Advanced Python Scheduler)是一個輕量級的Python定時任務調度框架(Python庫)。django-apscheduler的github鏈接https://github.com/jarekwg/django-apscheduler,可以通過github中的示例學習django-apschedule人的使用:

django-apscheduler是在apscheduler的基礎上針對django框架開發的一個插件
This little wrapper around APScheduler enables storing persistent jobs in the database using Django’s ORM rather than requiring SQLAlchemy or some other bloatware.

Features in this project:

  1. Work on both python2.* and python3+
  2. .Manage jobs from Django admin interface
  3. Monitor your job execution status: duration, exception, traceback, input parameters.
    支持python2以及python3+,能夠管理job和監控job的執行狀態,可以在數據庫中持久化存儲job。

django-apscheduler在Django框架中使用

1.1 需要安裝的包

pip install django_apscheduler
pip install apscheduler

1.2 修改django的配置

在django的配置文件settings.py中的INSTALLED_APPS中添加子應用’django_apscheduler’。

INSTALLED_APPS = [
	'django_apscheduler']

然後,執行遷移文件,更新數據庫

# 執行遷移文件,更新數據庫
python manage.py migrate

查看數據庫,數據庫中會新生成兩個表分別爲:django_apscheduler_djangojob和django_apscheduler_djangojobexecution
django_apscheduler_djangojob表結構和任務執行後數據記錄
在這裏插入圖片描述
django_apscheduler_djangojobexecution表結構和任務執行後數據記錄在這裏插入圖片描述

1.3 編寫定時任務

定時任務的示例如下,在django項目中的任意子應用的視圖view.py文件中添加定時任務,項目啓動之後,定時任務會自動執行。

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

scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")

# 時間間隔3秒鐘打印一次當前的時間
@register_job(scheduler, "interval", seconds=3, id='test_job')
def test_job():
    format_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    print(format_time)
    
# per-execution monitoring, call register_events on your scheduler
register_events(scheduler)
scheduler.start()
print("Scheduler started!")

apscheduler的文檔地址https://apscheduler.readthedocs.io/en/latest/userguide.html,github地址:https://github.com/agronholm/apscheduler,參數的設置,更多內容的學習,可以參考文檔的內容部分,參數的設置可以參考博文:http://www.chenxm.cc/article/829.html
apsheduler的簡單用例:

from apscheduler.schedulers.blocking import BlockingScheduler
import time

# 定時的任務,打印當前的時間
def test():
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

scheduler = BlockingScheduler()
# 時間間隔5秒
scheduler.add_job(test, trigger='interval', seconds=5, id='test')
scheduler.start()

apsheduler內置的觸發器trigger有三種:
date 日期:觸發任務運行的具體日期(只運行一次)
interval 間隔:觸發任務運行的時間間隔
cron 週期:觸發任務運行的週期(週期性運行)

django-apscheduler和apscheduler的參數設置基本類似,可以互相參考。

發佈了27 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章