Django中使用celery完成異步任務(wù)的示例代碼
本文主要介紹如何在django中用celery完成異步任務(wù),web項(xiàng)目中為了提高用戶體驗(yàn)可以對(duì)一些耗時(shí)操作放到異步隊(duì)列中去執(zhí)行,例如激活郵件,后臺(tái)計(jì)算操作等等 當(dāng)前項(xiàng)目環(huán)境為: django==1.11.8 celery==3.1.25 redis==2.10.6 pip==9.0.1 python3==3.5.2 django-celery==3.1.17
一,創(chuàng)建Django項(xiàng)目及celery配置
1,創(chuàng)建Django項(xiàng)目
1>打開(kāi)終端輸入:django-admin startproject TestCelery 創(chuàng)建django項(xiàng)目('TestCelery'是項(xiàng)目名稱)
2>進(jìn)行TestCelery在終端輸入指令:django-admin startapp testcelery 創(chuàng)建應(yīng)用('testcelery為應(yīng)用名稱')
2, 為celery設(shè)置環(huán)境變量
1>項(xiàng)目中在TestCelery中創(chuàng)建celery.py文件(與setting.py同級(jí))輸入以下內(nèi)容:
from celery import Celery
from django.conf import settings
import os
# 為celery設(shè)置環(huán)境變量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TestCelery.settings')
# 創(chuàng)建應(yīng)用
app = Celery('testcelery')
# 酸配置應(yīng)用
app.conf.update(
# 本地Redis服務(wù)器
BROKER_URL='redis://127.0.0.1:6379/2',
)
app.autodiscover_tasks(settings.INSTALLED_APPS)
2>當(dāng)前項(xiàng)目目錄如下圖所示:
二,創(chuàng)建任務(wù)tasks,編寫(xiě)視圖View及urls
1, 在testcelery應(yīng)用中新建tasks.py文件,并寫(xiě)入要進(jìn)行處理的任務(wù):
from TestCelery.celery import app
from time import sleep
@app.task
def start_running(nums):
print('***>%s<***' %nums)
print('--->>開(kāi)始執(zhí)行任務(wù)<<---')
for i in range(10):
print('>>'*(i+1))
sleep(1)
print('>---任務(wù)結(jié)束---<')
2,編寫(xiě)view視圖,并寫(xiě)入調(diào)用client的方法
from django.views import View
from django.http import HttpResponse
from .tasks import start_running
from time import sleep
# Create your views here.
class IdexView(View):
def get(self, request):
print('>=====開(kāi)始發(fā)送請(qǐng)求=====<')
for i in range(10):
print('>>',end='')
sleep(0.1)
start_running.delay('》》》》》我是傳送過(guò)來(lái)的《《《《《')
return HttpResponse('<h2> 請(qǐng)求已發(fā)送 </h2>')
3,編寫(xiě)testcelery應(yīng)用的usrls
from django.conf.urls import url from .views import * urlpatterns = [ url(r'^$', IdexView.as_view()), ]
4,當(dāng)前項(xiàng)目目錄如下圖所示:
三,運(yùn)行項(xiàng)目,開(kāi)啟worker
1, 運(yùn)行項(xiàng)目在當(dāng)前項(xiàng)目下輸入啟動(dòng)服務(wù)指令:python manager.py runserver,出現(xiàn)如下圖所示即代表運(yùn)行成功:

2,開(kāi)啟worker另在當(dāng)前項(xiàng)目下另打開(kāi)一個(gè)終端,輸入指令: celery -A TestCelery worker --loglevel=DEBUG,啟動(dòng)后如下如示:
3,調(diào)用任務(wù)
1>打開(kāi)瀏覽器,輸入http://127.0.0.1:8000/send/ 進(jìn)行訪問(wèn)

2> woker監(jiān)聽(tīng)到任務(wù)請(qǐng)求時(shí),就會(huì)執(zhí)行耗時(shí)任務(wù),如下圖所示:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PyCharm搭建Spark開(kāi)發(fā)環(huán)境實(shí)現(xiàn)第一個(gè)pyspark程序
這篇文章主要介紹了PyCharm搭建Spark開(kāi)發(fā)環(huán)境實(shí)現(xiàn)第一個(gè)pyspark程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python Selenium中常用的元素定位方法總結(jié)
在Web自動(dòng)化測(cè)試中,元素定位是一項(xiàng)非常重要的技術(shù),Python Selenium提供了各種元素定位方法,可以幫助我們定位頁(yè)面上的元素并與之交互,本文將詳細(xì)介紹Python Selenium中常用的元素定位方法,并提供實(shí)例代碼,需要的朋友可以參考下2023-11-11
python基于watchdog庫(kù)全自動(dòng)化監(jiān)控目錄文件
這篇文章主要介紹了python基于watchdog庫(kù)全自動(dòng)化監(jiān)控目錄文件,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
關(guān)于Python使用logging庫(kù)進(jìn)行有效日志管理的方法詳解
在開(kāi)發(fā)大型軟件或處理復(fù)雜問(wèn)題時(shí),我們經(jīng)常需要一種方法來(lái)記錄和跟蹤程序的運(yùn)行狀態(tài),Python 提供了一個(gè)名為 logging 的標(biāo)準(zhǔn)庫(kù),可以幫助我們更好地完成這項(xiàng)任務(wù),在這篇文章中,我們將介紹如何使用 Python 的 logging 庫(kù)進(jìn)行日志記錄2023-06-06
Python對(duì)接PicGo實(shí)現(xiàn)圖片自動(dòng)加水印并上傳操作示例
這篇文章主要為大家介紹了Python對(duì)接PicGo實(shí)現(xiàn)圖片自動(dòng)加水印并上傳的操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
關(guān)于PyQt5主窗口圖標(biāo)顯示問(wèn)題匯總
這篇文章主要介紹了關(guān)于PyQt5主窗口圖標(biāo)顯示問(wèn)題匯總,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析
這篇文章主要介紹了Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
如何從PyTorch中獲取過(guò)程特征圖實(shí)例詳解
特征提取是圖像處理過(guò)程中常需要用到的一種方法,其效果好壞對(duì)模型的泛化能力有至關(guān)重要的影響,下面這篇文章主要給大家介紹了關(guān)于如何從PyTorch中獲取過(guò)程特征圖的相關(guān)資料,需要的朋友可以參考下2023-01-01
利用Python和PyQt5構(gòu)建一個(gè)多功能PDF轉(zhuǎn)換器
在日常工作中,處理PDF文件幾乎是每個(gè)人都不可避免的任務(wù),本文將通過(guò)Python和PyQt5搭建一個(gè)強(qiáng)大的PDF文件處理平臺(tái),希望對(duì)大家有所幫助2024-12-12

