Django Apscheduler詳解

一、什麼是Django Apscheduler

Django Apscheduler是Django與Apscheduler進行結合的一個開源庫,Apscheduler是Python中的一個定時任務調度器,可以讓我們可以方便地進行定時任務的管理。

二、Django Apscheduler的安裝及配置

1、安裝

pip install django-apscheduler

2、在django的settings.py文件中配置相關信息


INSTALLED_APPS =[
    'django_apscheduler',
    # ...
]

SCHEDULER_AUTOSTART = True

SCHEDULER_RUN_NOW = True

SCHEDULER_TIMEZONE = "Asia/Shanghai"

其中,SCHEDULER_AUTOSTART表示Django啟動時,任務調度器是否隨之啟動;SCHEDULER_RUN_NOW表示Django啟動時,任務調度器是否跑一遍;SCHEDULER_TIMEZONE是任務調度器所使用的時區。

三、Django Apscheduler的使用方法

1、創建任務

在Django Apscheduler中,我們可以使用裝飾器或繼承django_apscheduler.models的BaseJob類來創建我們的任務。

裝飾器創建方法:


from django_apscheduler.jobstores import DjangoJobStore, register_job

@register_job(DjangoJobStore(), 'interval', seconds=30)
def task_job():
    print('Django apscheduler task')

繼承BaseJob類創建方法:


from django_apscheduler.models import DjangoJob
from django_apscheduler.jobstores import DjangoJobStore

class TaskJob(DjangoJob):
    owner = models.ForeignKey(settings.AUTH_USER_MODEL)

    @classmethod
    def get_owner(klass, id):
        try:
            return klass.objects.get(id).owner
        except klass.DoesNotExist:
            return None

    def run(self):
        print('Django apscheduler task')

job = TaskJob()
job.interval_seconds = 30
job.save()

2、任務調度器的各種配置

除了上述的SCHEDULER_AUTOSTART、SCHEDULER_RUN_NOW和SCHEDULER_TIMEZONE,Django Apscheduler還有各種配置可以設定,下面是部分配置:


SCHEDULER_JOBSTORES = {
    'default': DjangoJobStore(),
}

SCHEDULER_EXECUTORS = {
    'default': {'type': 'threadpool', 'max_workers': 20},
}

SCHEDULER_JOB_DEFAULTS = {
    'coalesce': True,
    'misfire_grace_time': 10 * 60,
    'max_instances': 3,
}

SCHEDULER_API_ENABLED = True

3、任務的執行

我們創建任務後,需要在Django啟動後,我們的任務才會開始執行。

啟動方式1:


from django_apscheduler.jobstores import register_events

register_events(SCHEDULER)

啟動方式2:


from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore
from django_apscheduler.jobstores import register_events

scheduler = BackgroundScheduler(timezone=get_current_timezone())
scheduler.add_jobstore(DjangoJobStore())
register_events(scheduler)
scheduler.start()

啟動方式3:


python manage.py runapscheduler

四、任務的刪除與修改

我們可以通過任務的id來刪除或修改任務。

刪除任務:


from django_apscheduler.models import DjangoJobExecution

DjangoJob.objects.filter(id=id).delete()
DjangoJobExecution.objects.filter(job_id=id).delete()

修改任務:


job = DjangoJob.objects.get(id=id)
job.next_run_time = django_timezone.now()
job.save()

五、小結

在本文中,我們詳細介紹了Django Apscheduler的安裝、配置、創建任務、任務調度器的配置以及任務的執行和刪除等相關信息。希望讀者可以通過本文對Django Apscheduler有一個深入的了解,並在實際開發中靈活運用。

原創文章,作者:XOENA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/329836.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XOENA的頭像XOENA
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:55

相關推薦

  • Django ORM如何實現或的條件查詢

    在我們使用Django進行數據庫操作的時候,查詢條件往往不止一個,一個好的查詢語句需要考慮我們的查詢要求以及業務場景。在實際工作中,我們經常需要使用或的條件進行查詢,本文將詳細介紹…

    編程 2025-04-29
  • Django項目中執行Python腳本

    本文將闡述在Django項目中如何執行Python腳本以及執行腳本的幾種方式。 一、subprocess模塊執行Python腳本 subprocess模塊提供了一個簡單的接口用於創…

    編程 2025-04-27
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • C語言貪吃蛇詳解

    一、數據結構和算法 C語言貪吃蛇主要運用了以下數據結構和算法: 1. 鏈表 typedef struct body { int x; int y; struct body *nex…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25

發表回復

登錄後才能評論