Python開發運維:Django 4.2.7 使用Celery 5.3.5 完成異步和定時任務

目錄

一、實驗

1.Django使用Celery完成異步和定時任務

二、實驗

1. 如何查看Django版本


一、實驗

1.Django使用Celery完成異步和定時任務

(1)安裝Django

(2)新建Django項目

(3)初始框架

(4)urls.py引用視圖views

from django.contrib import admin
from django.urls import path
from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('test/',views.test)
]

(5)編寫view

from django.shortcuts import render,HttpResponse# Create your views here.
def test(request):return HttpResponse("OK")

(6)點擊運行

(7)查看運行結果,點擊鏈接

(8)顯示OK

http://127.0.0.1:8000/test/

(9)新建消費者目錄mycelery

(10)tasks.py文件定義異步或定時任務

(11)編寫配置文件config.py

#消息中間件
broker_url = 'redis://127.0.0.1:6379/15'
#異步存儲地方
result_backend = 'redis://127.0.0.1:6379/14'

(12)main.py將配置文件解耦

# -*- coding: utf-8 -*-
# 主程序
import os
import celery as celery
from celery import Celery
import eventlet
# 創建celery實例對象
app = Celery("djcelery")
# 把celery和django進行組合,識別和加載django的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'celeryPros.settings.dev')
# 通過app對象加載配置
app.config_from_object("mycelery.config")
# 加載任務
# 參數必須必須是一個列表,里面的每一個任務都是任務的路徑名稱
# app.autodiscover_tasks(["任務1","任務2"])
app.autodiscover_tasks(["mycelery.sms",])

(13)tasks文件

# -*- coding: utf-8 -*-
# celery的任務必須寫在tasks.py的文件中,別的文件名稱不識別!!!
from mycelery.main import app
import time
import logging
log = logging.getLogger("django")
@app.task  # name表示設置任務的名稱,如果不填寫,則默認使用函數名做為任務名
def send_sms(mobile):"""發送短信"""print("向手機號%s發送短信成功!"%mobile)time.sleep(5)return "send_sms OK"
@app.task  # name表示設置任務的名稱,如果不填寫,則默認使用函數名做為任務名
def send_sms2(mobile):print("向手機號%s發送短信成功2!"%mobile)time.sleep(5)return "send_sms2 OK"

(14)view視圖添加異步代碼

from django.shortcuts import render,HttpResponse
# Create your views here.
from mycelery.sms.tasks import send_sms,send_sms2
def test(request):#異步任務# 1. 聲明一個和celery一模一樣的任務函數,但是我們可以導包來解決# send_sms.delay("139XXXXXXXX")# send_sms2.delay("135XXXXXXXX")# send_sms.delay() 如果調用的任務函數沒有參數,則不需要填寫任何內容

(15)瀏覽器刷新或回車,進行觀察

(16)消費者一方配置完成

(17)?mycelery根目錄

(18)已啟動消費

PS D:\soft\Djcelery> celery --app=mycelery.main worker -n node1 -l INFO -P eventlet

(19)查看異步消息

(20)注釋異步任務代碼

(21)添加定時任務代碼

    #定時任務from datetime import datetime,timedeltactime = datetime.now()# 默認用utc時間utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())time_delay = timedelta(seconds=10)task_time = utc_ctime + time_delayresult = send_sms.apply_async(["136XXXXXXXX", ], eta=task_time)print(result.id)

(22)瀏覽器再次刷新或回車,進行觀察

(23)查看定時消息

(24)查看RUN結果

(25)完整項目架構

(26)查看Redis可視化界面

二、實驗

1. 如何查看Django版本

(1)方式一

indows系統下,在cmd命令窗口中輸入python進入Python解釋器
Linux系統下, 直接使用終端調用Python解釋器接下來輸入:
>>> import django
>>> print django.VERSION # Python2的格式
>>> print(django.VERSION) # Python3的格式 或者輸入:
>>> django.get_version()  # 獲取當前djiango版本號

(2)方式二

在IDE內 的terminal 內輸入python -m django --versiondjango-admin --version這兩個命令 一樣可以查詢到。注意:通常在項目的目錄下查詢。這種方式適合項目已經建立,虛擬Python環境也已經配置好。Django不是全局安裝的時候。

(3)方式三

Windows系統下,在cmd命令窗口中輸入python進入Python解釋器Linux系統下,直接使用終端調用Python解釋器直接輸入:
python -m django --versiondjango-admin --version注意:這里django是全局安裝。

(4)方法四

在項目目錄下的lib文件夾內的site-packpage文件夾內直接可以看到Django版本。

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

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

相關文章

python之UDP網絡應用程序開發

文章目錄 版權聲明UDP網絡應用程序開發UDP初識UDP知識要點socket類的使用UDP發送數據開發流程分析UDP服務客戶端通信栗子UDP廣播發送 版權聲明 本博客的內容基于我個人學習黑馬程序員課程的學習筆記整理而成。我特此聲明,所有版權屬于黑馬程序員或相關權利人所有。…

CodeWhisperer 體驗總結

CodeWhisperer 體驗總結 | CodeWhisperer 是一款亞馬遜新推出的通用代碼生成器 可以實時進行代碼數據的提供 還可以定義安全問題 CodeWhisperer 對個人用戶是免費使用 企業用戶需要訂閱使用 亞馬遜云科技開發者社區為開發者們提供全球的開發技術資源。這里有技術文檔、開發案例…

Linux:配置Ubuntu系統的鏡像軟件下載地址

一、原理介紹 好處:從國內服務器下載APT軟件,速度快。 二、配置 我這里配置的是清華大學的鏡像服務器地址 https://mirrors.tuna.tsinghua.edu.cn/ 1、備份文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2、清空sources.list ec…

廣告機/商業顯示屏_基于MT8788安卓主板方案

安卓主板在廣告機領域扮演著重要的角色。無論是在商場、車站、酒店、電梯、機場還是高鐵站,LED廣告機廣泛應用,并通過不同方式進行播放和管理。 廣告機/商業顯示屏_基于MT8788安卓主板方案 基于MT8788安卓主板方案的廣告機采用了聯發科MT8788八核芯片方案…

國標直流充電槍9孔分別啥意思?

DC:直流電源正 DC-:直流電源負 PE:接地(搭鐵)S:通訊CAN-H S-:通訊CAN-L CC1:充電連接確認 CC2:充電連接確認 A:12V A-:12V- 以上就是國標直流充電…

線上ES集群參數配置引起的業務異常案例分析

本文介紹了一次排查Elasticsearch node_concurrent_recoveries 引發的性能問題的過程。 一、故障描述 1.1 故障現象 1. 業務反饋 業務部分讀請求拋出請求超時的錯誤。 2. 故障定位信息獲取 故障開始時間 19:30左右開始 故障拋出異常日志 錯誤日志拋出timeout錯誤。 故障之前…

BTC 復興:Ordinals 帶來創新活力,BitVM 與 BitStream 相繼問世

除了備受矚目的 ETF,今年 Bitcoin 生態迎來全新的發展活力和機遇。Ordinals 協議的橫空出世,以此為基礎誕生的 BRC20 協議給整個比特幣生態帶去了一波新的能量,迎來銘文熱度高漲。而諸如 BitVM、BitStream 等新技術甫一問世,便引發…

openssl+ RSA + linux 簽名校驗開發實例(C++)

文章目錄 一、RSA簽名校驗二、RSA簽名校驗開發實例 一、RSA簽名校驗 RSA簽名校驗是一種用于驗證數字簽名的過程,它確保簽名是由擁有相應私鑰的合法實體創建的。以下是RSA簽名校驗的理論知識點: RSA密鑰對: RSA簽名使用一對公鑰和私鑰。公鑰用…

RPCS3(PlayStation 3游戲模擬器)漢化教程

RPCS3 RPCS3 是一款PlayStation 3 模擬器,可讓 Windows、Linux 或 BSD 系統的用戶運行索尼 PlayStation 3 游戲。 安裝教程 包含 Windows/Linux版本 詳細安裝漢化教程請查看文章 RPCS3(PS3模擬器)安裝及漢化教程 1.首先下載最新版 RPCS3模…

classifier-free-guidance 擴散模型引導生成

淺談擴散模型的有分類器引導和無分類器引導 - 知乎這篇文章主要比較一下擴散模型的引導生成的三種做法的區別。它們分別是用顯式分類器引導生成的做法,用隱式無分類器引導的做法和用CLIP計算跨模態間的損失來引導生成的做法。 Classifier-Guidance: Diffusion Mode……

瀏覽器是什么

瀏覽器是什么 本文簡要介紹瀏覽器的功能和組成。 瀏覽器(Web Browser)是一種用于訪問和瀏覽互聯網上的網頁和資源的軟件應用程序。它是用戶與互聯網交互的主要工具之一。 瀏覽器通過使用網絡協議(如HTTP、HTTPS等)與遠程服務器通…

從0開始學習JavaScript--JavaScript數據類型與數據結構

JavaScript作為一門動態、弱類型的腳本語言,擁有豐富的數據類型和數據結構,這些構建了語言的基礎,為開發者提供了靈活性和表達力。本文將深入探討JavaScript中的各種數據類型,包括基本數據類型和復雜數據類型,并介紹常…

nginx知識梳理及配置詳解

軟件開發全文檔獲取:點我獲取 nginx安裝 #nginx安裝 yum -y install gcc pcre-devel openssl-devel #依賴包 useradd -s /sbin/nologin nginx ./configure --prefix/usr/local/nginx #指定安裝目錄 --usernginx #指定用戶 --with-http_ss…

【數據庫篇】關系模式的表示——(1)問題的提出

1、關系模式的表示 R:表示關系的名字比如:sc選課表,student學生表。 U:表示一個關系模式的所有屬性,比如student表:U(sno,sname,sage,ssex)。 …

LedControl 庫說明文檔

LedControl 庫最初是為基于 8 位 AVR 處理器的 Arduino 板編寫的。但由于該代碼不使用處理器的任何復雜的內部功能,因此具有高度可移植性,并且應該在任何支持 和 功能的 Arduino(類似)板上pinMode()運行digitalWrite() 。 單個 M…

C練習題_3

一、單項選擇題(本大題共20小題,每小題2分,共40分。在每小題給出的四個備選項中,選出一個正確的答案,并將所選項前的字母填寫在答題紙的相應位置上。 以下正確的C語言自定義標識符是() A. la B. 2a C. do D. a.12 2.在C語言中,錯…

C# 之對象與Xml序列化工具類

寫在前面 一個常用的對象與Xml序列化工具類&#xff0c;使用系統類庫System.Xml&#xff0c;序列化時需要注意只能將對象的公共字段和讀/寫屬性轉換為 XML。不轉換方法、索引器、私有字段或只讀屬性。另外XmlSerializer 類無法序列化ArrayList數組和List<T>數組。 using…

3、Qt使用windeploy工具打包可執行文件

新建一個文件夾&#xff0c;把要打包的可執行文件exe拷貝過來 點擊輸入框&#xff0c;復制一下文件夾路徑 點擊電腦左下角&#xff0c;找到Qt文件夾&#xff0c; 點擊打開 “Qt 5.12.0 for Desktop” &#xff08;我安裝的是Qt 5.12.0版本&#xff09; 輸入“cd bin”&#xff…

springsecurity5.7.x和springsecurity6.x配置文件對比

springsecurity5和springsecurity6如何要實現多種登錄方式&#xff0c;自定義登錄方式都是一樣的操作步驟&#xff0c;主要有四個步驟。 一、自定義登錄用戶實體實現springsecurity中的UserDetails接口 二、自定義登錄用戶實現類實現springsecurity中的UserDetailsService接口 …

vivado產生報告閱讀分析20-QOR

Report QoR Suggestions report_qor_suggestions 命令是處理 QoR 建議對象時使用的主要命令。 QoR 建議對象會創建命令和屬性來改善設計的時序性能&#xff08; 欲知詳情 &#xff0c; 請參閱 QoR 建議 &#xff09; 。 report_qor_suggestions 命令可執行兩項任務 &am…