Django框架使用定時器-APScheduler實現定時任務:django實現簡單的定時任務

一、系統環境依賴

系統:windows10

python: python==3.9.0

djnago==3.2.0

APScheduler==3.10.1

二、django項目配置

1、創建utils包,在包里面創建schedulers包

utils/schedulers/task.py

#1、設置 Django 環境,就可以導入項目的模型類這些了
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "項目根目錄名.settings")
import django
django.setup()
#2、一些需要的模塊
from datetime import datetime,timedelta,date#3、django項目中模型類NOW_DATETIME = datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S')
NOW_DATE = date.today().strftime('%Y-%m-%d')def example_interval():'''每隔一段固定時間就執行一次:return:'''print('interval',NOW_DATETIME)def example_cron():'''在每天的固定時間執行:return:'''print('cron,凌晨開始執行的定時任務')def example_date():'''在指定日期執行一次,就執行一次:return:'''print(f'date,指定日期執行一次:{NOW_DATETIME}')

utils/schedulers/scheduler.py

# 2、導入所需的調度器類和觸發器類
from apscheduler.jobstores.memory import MemoryJobStore
from apscheduler.jobstores.redis import RedisJobStore
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger
from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.date import DateTrigger
from pytz import timezone
from threading import RLock
from django.conf import settings
from datetime import datetime,timedelta
lock = RLock()#3、導入定時任務
from .task import example_interval   #例子,時間間隔,每隔一段時間執行
from .task import example_cron  #指定時間執行,在指定時間點執行
from .task import example_date #指定日期執行,執行一次class __SchedulerManage(BackgroundScheduler):_instance = Nonedef __new__(cls, *args, **kwargs):if cls._instance:return cls._instancewith lock:if cls._instance:return cls._instancecls._instance = super().__new__(cls)return cls._instancedef __init__(self):super().__init__()# 1、設置時區self.timezone = timezone(settings.TIME_ZONE)# 2、使用內存存儲定時任務信息jobstore_redis = RedisJobStore(host='localhost', port=6379, db=0, password='redis密碼')jobstore_memory = MemoryJobStore()self.add_jobstore(jobstore_memory)# 3、添加任務self.add_task()def add_task(self):'''自定義的功能: 用來添加定時任務的:return:''''1、三種觸發器的例子'#每隔一段固定時間段執行一次,1小時執行一次,設置開始時間是啟動時間后的3分鐘self.add_job(example_interval, trigger=IntervalTrigger(hours=1,start_date=datetime.now()+timedelta(minutes=3)), id='example_interval', replace_existing=True)#設置每天的11:03:10 執行一次self.add_job(example_cron,trigger=CronTrigger(hour=11,minute=3,second=10),id='example_cron',replace_existing=True)#設置在2023-08-10 11:03:01執行一次,只執行一次self.add_job(example_date,trigger=DateTrigger(run_date=datetime(2023,8,10,11,3,1)),id='example_date',replace_existing=True)#也可以在實例化時設置時區:__SchedulerManage(timezone=timezone('Asia/Shanghai'))
scheduler_ = __SchedulerManage()
if __name__ == '__main__':#啟動 scheduler_.start()  或者 scheduler_() 兩種方式都okscheduler_()

utils/schedulers/__init__.py

from .scheduler import scheduler_

2、項目配置文件settings.py

####配置定時任務
#啟動定時任務
from utils.schedulers import scheduler_
scheduler_.start()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43592.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AR/VR眼鏡轉接器方案,實現同時傳輸視頻快充方案

簡介 虛擬現實頭戴顯示器設備,簡稱VR頭顯VR眼鏡,是利用仿真技術與計算機圖形學人機接口技術多媒體技術傳感技術網絡技術等多種技術集合的產品,是借助計算機及最新傳感器技術創造的一種嶄新的人機交互手段。VR頭顯VR眼鏡是一個跨時代的產品。不…

AgentBench——AI智能體基準測試和排行榜

如果您有興趣了解有關如何對AI大型語言模型或LLM進行基準測試的更多信息,那么一種新的基準測試工具Agent Bench已成為游戲規則的改變者。這個創新工具經過精心設計,將大型語言模型列為代理,對其性能進行全面評估。該工具的首次亮相已經在AI社區掀起了波瀾,揭示了ChatGPT-4目…

Selenium 測試用例編寫

編寫Selenium測試用例就是模擬用戶在瀏覽器上的一系列操作,通過腳本來完成自動化測試。 編寫測試用例的優勢: 開源,免費。 支持多種瀏覽器 IE,Firefox,Chrome,Safari。 支持多平臺 Windows,Li…

day-23 代碼隨想錄算法訓練營(19)part09

669.修剪二叉搜索樹 思路一:根據二叉搜索樹的特性進行中間值與去區間值判斷,有三種情況:1.在區間中,所以左右子樹都可能在區間中; 2.在區間外面的左側,必然只有右子樹可能存在區間中;3.在區間外…

Spring中JavaBean的生命周期及模式

( 本篇文章大部分講述了是底層知識,理念及原理 ) ( 如果只想了解,看我標記的重點即可,如果想明白其中原理,請耐心看完,對你大有受益 ) 目錄 一、簡介 ( 1 ) 是什么 ( 2 ) 背景概述 ( 3 ) 作用 二、生命周期 2.1 …

【計算機視覺|生成對抗】StackGAN:使用堆疊生成對抗網絡進行文本到照片逼真圖像合成

本系列博文為深度學習/計算機視覺論文筆記,轉載請注明出處 標題:StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 鏈接:[1612.03242] StackGAN: Text to Photo-realistic Image Synthesis…

ViewFs And Federation On HDFS

序言 ViewFs 是在Federation的基礎上提出的,用于通過一個HDFS路徑來訪問多個NameSpace,同時與ViewFs搭配的技術是client-side mount table(這個就是具體的規則配置信息可以放置在core.xml中,也可以放置在mountTable.xml中). 總的來說ViewFs的其實就是一個中間層,用于去連接不…

Vue3 setup語法糖 解決富文本編輯器上傳圖片64位碼過長問題 quill-image-extend-module

引言&#xff1a; 富文本編輯器傳圖片會解碼成64位&#xff0c;非常長導致數據庫會報錯第一種方法&#xff1a;將數據庫類型改成 mediumtext第二種辦法&#xff1a;本文中的方法 說明&#xff0c;本周文所用語法糖為Vue3 setup語法&#xff0c;即<script setup> 思路 攔…

HIVE SQL通過Lateral View + explode實現列轉行

原表&#xff1a; abAndy<碟中諜>,<諜影重重>,<007>MOMO<小鞋子>,<朋友啊你的家在哪里> 實現效果 abAndy<碟中諜>Andy<諜影重重>Andy<007>MOMO<小鞋子>MOMO<朋友啊你的家在哪里> 實現代碼&#xff1a; selec…

STM32 F103C8T6學習筆記8:0.96寸單色OLED顯示屏顯示字符

使用STM32F103 C8T6 驅動0.96寸單色OLED顯示屏: OLED顯示屏的驅動&#xff0c;在設計開發中OLED顯示屏十分常見&#xff0c;因此今日學習一下。一篇文章從程序到顯示都講通。 文章提供源碼、原理解釋、測試工程下載&#xff0c;測試效果圖展示。 目錄 OLED驅動原理—IIC通信…

無涯教程-Perl - undef函數

描述 此函數未定義EXPR的值。用于標量,列表,哈希,函數或類型范圍。在帶有諸如undef $hash {$key}之類的語句的哈希上使用&#xff1b;實際上將指定鍵的值設置為未定義的值。 如果要從哈希中刪除元素,請使用delete函數。 語法 以下是此函數的簡單語法- undef EXPRundef返回…

Java進階篇--迭代器模式

目錄 同步迭代器&#xff08;Synchronous Iterator&#xff09;&#xff1a; Iterator 接口 常用方法&#xff1a; 注意&#xff1a; 擴展小知識: 異步迭代器&#xff08;Asynchronous Iterator&#xff09;&#xff1a; 常用的方法 注意&#xff1a; 總結&#xff1a…

LeetCode 每日一題 2023/8/14-2023/8/20

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 8/14 617. 合并二叉樹8/15 833. 字符串中的查找與替換8/16 2682. 找出轉圈游戲輸家8/17 1444. 切披薩的方案數8/18 1388. 3n 塊披薩8/19 2235. 兩整數相加8/20 8/14 617. 合…

【學習FreeRTOS】第9章——FreeRTOS任務調度

1.開啟任務調度器 vTaskStartScheduler() 作用&#xff1a;用于啟動任務調度器&#xff0c;任務調度器啟動后&#xff0c; FreeRTOS 便會開始進行任務調度【動態創建任務為例】 創建空閑任務如果使能軟件定時器&#xff0c;則創建定時器任務關閉中斷&#xff0c;防止調度器開…

Microsoft ISA服務器配置及日志分析

Microsoft ISA 分析器工具&#xff0c;可分析 Microsoft ISA 服務器&#xff08;或 Forefront 威脅管理網關服務器&#xff09;的日志并生成安全和流量報告。支持來自 Microsoft ISA 服務器組件的以下日志&#xff1a; 數據包過濾器ISA 服務器防火墻服務ISA 服務器網絡代理服務…

透過源碼理解Flutter中widget、state和element的關系

1、framework源碼組成 Flutter中widget、state、element的源碼位于framework.dart中&#xff0c;整個文件6693行(版本Flutter 3.12.0-14.0.pre.28)。整個代碼可劃分為若干部分&#xff0c;主要包括key、widget、state、element四部分。 1.1 key 關于key的代碼65行到272行&am…

NVIDIA GPU驅動和CUDA工具包 Linux CentOS 7 在線安裝指南

挑選指定系統和對應的GPU型號下載驅動和CUDA工具包: Linux CentOS安裝NVIDIA GPU驅動程序和NVIDIA CUDA工具包_centos安裝顯卡驅動和cuda_Entropy-Go的博客-CSDN博客 相比之下&#xff0c;本文是在線安裝NVIDIA GPU驅動和CUDA工具包方式&#xff0c;省去挑選對應正確安裝包的煩…

Uniapp Syntax Error: Error: Unbalanced delimiter found in string

報錯 in ./src/pages/user/components/tasks.vue?vue&typescript&langjs&Syntax Error: Error: Unbalanced delimiter found in string...這邊導致文件的原因&#xff1a;可能是條件編譯語法不小心刪了某個字符&#xff0c;導致不全&#xff0c;無法形成一對。 //…

GuLi商城-前端基礎Vue-生命周期和鉤子函數

下圖展示了實例的生命周期。你不需要立馬弄明白所有的東西&#xff0c;不過隨著你的不斷學習和使用&#xff0c;它 的參考價值會越來越高。 VUE 的生命周期指的是組件在創建、運行和銷毀過程中所經歷的一系列事件&#xff0c;通過這些事件可以 讓開發者在不同階段進行相應的…

vue3 + antv/x6 實現拖拽側邊欄節點到畫布

前篇&#xff1a;vue3ts使用antv/x6 自定義節點 前篇&#xff1a;vue3antv x6自定義節點樣式 1、創建側邊欄 用antd的menu來做側邊欄 npm i --save ant-design-vue4.x//入口文件main.js內 import Antd from ant-design-vue; import App from ./App; import ant-design-vue/…