欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django中使用Celery 布式任務(wù)隊列過程詳解

 更新時間:2019年07月29日 10:06:58   作者:baagee  
這篇文章主要介紹了django中使用Celery 布式任務(wù)隊列實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

本文記錄django中如何使用celery完成異步任務(wù)。

Celery 是一個簡單、靈活且可靠的,處理大量消息的分布式系統(tǒng),并且提供維護這樣一個系統(tǒng)的必需工具。

它是一個專注于實時處理的任務(wù)隊列,同時也支持任務(wù)調(diào)度。

官方網(wǎng)站

中文文檔

示例一:用戶發(fā)起request,并等待response返回。在本些views中,可能需要執(zhí)行一段耗時的程序,那么用戶就會等待很長時間,造成不好的用戶體驗

示例二:網(wǎng)站每小時需要同步一次天氣預(yù)報信息,但是http是請求觸發(fā)的,難道要一小時請求一次嗎?

使用celery后,情況就不一樣了

示例一的解決:將耗時的程序放到celery中執(zhí)行

示例二的解決:使用celery定時執(zhí)行

名詞

任務(wù)task:就是一個Python函數(shù)

隊列queue:將需要執(zhí)行的任務(wù)加入到隊列中

工人worker:在一個新進程中,負責(zé)執(zhí)行隊列中的任務(wù)

代理人broker:負責(zé)調(diào)度,在布置環(huán)境中使用redis

本示例在ubuntu系統(tǒng)中,使用django1.8.2,并且要安裝redis

1,首先需要安裝擴展包。

pip install celery==3.1.25
pip install celery-with-redis==3.0
pip install django-celery==3.1.17

2,配置項目setting.py

加入以下代碼:

import djcelery
djcelery.setup_loader()
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_IMPORTS = ('bookstory.task')

CELERY_IMPORTS值是異步任務(wù)函數(shù)所在的位置,比如這個是bookstory應(yīng)用里面的task.py文件里,如圖:

并且將'djcelery'加入到setting.py的INSTALLED_APPS里面。

3,編寫需要異步執(zhí)行(或者耗時)的功能函數(shù)

編寫task.py文件,假設(shè)我就這樣模擬耗時操作

# coding=utf-8

import time
from celery import task


@task
def showa():
  # 任務(wù)函數(shù)
  print('hello....')
  time.sleep(5)
  print('world....')

4,遷移,生成celery需要的數(shù)據(jù)表

python manage.py migrate

5,啟動worker

python manage.py celery worker --loglevel=info

6,使用

新建一個視圖函數(shù),并且分配一個url

from task import *

.........

# celery異步
def showTest(request):
  showa.delay()
  return HttpResponse('哈哈哈')

調(diào)用語法就是:

function.delay(parameters)

function就是task里寫的函數(shù),parameters就是這個函數(shù)要傳遞的參數(shù),我的showa沒有傳參數(shù),所以就直接showa.delay()就可以調(diào)用了。

運行結(jié)果就是在瀏覽器中并沒有等待5秒,而是直接輸出'哈哈'了。并沒有因為耗時的操作二延遲。在啟動worker的窗口里面可以看到hello,world間隔5秒分別輸出了出來:

按照步驟來,其實并不難,具體異步(耗時)操作根據(jù)具體業(yè)務(wù)在task里面具體編寫就ok了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python的__builtin__模塊中的一些要點知識

    Python的__builtin__模塊中的一些要點知識

    這篇文章主要介紹了Python的__builtin__模塊中的一些要點知識,是Python學(xué)習(xí)中的基礎(chǔ),需要的朋友可以參考下
    2015-05-05
  • Python中Enum使用的幾點注意事項

    Python中Enum使用的幾點注意事項

    Python中的枚舉是作為一個類存在的,這是與其他語言的一個較為鮮明的特征,下面這篇文章主要給大家介紹了關(guān)于Python中Enum使用的幾點注意事項,需要的朋友可以參考下
    2022-02-02
  • Pandas把dataframe或series轉(zhuǎn)換成list的方法

    Pandas把dataframe或series轉(zhuǎn)換成list的方法

    這篇文章主要介紹了Pandas把dataframe或series轉(zhuǎn)換成list的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 利用Python制作一個愚人節(jié)整蠱消息框

    利用Python制作一個愚人節(jié)整蠱消息框

    又到了一年一度的愚人節(jié)了,本文小編為大家準備了用Python語言制作的愚人節(jié)整蠱消息框,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-04-04
  • Python一行代碼識別車牌號碼實現(xiàn)示例詳解

    Python一行代碼識別車牌號碼實現(xiàn)示例詳解

    這篇文章主要為大家介紹了Python一行代碼識別車牌號碼實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Python如何獲取當(dāng)前路徑并列出當(dāng)前路徑下的所有文件

    Python如何獲取當(dāng)前路徑并列出當(dāng)前路徑下的所有文件

    這篇文章主要介紹了Python如何獲取當(dāng)前路徑并列出當(dāng)前路徑下的所有文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • postman發(fā)送文件請求并以python服務(wù)接收方式

    postman發(fā)送文件請求并以python服務(wù)接收方式

    這篇文章主要介紹了postman發(fā)送文件請求并以python服務(wù)接收方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Python綁定方法與非綁定方法詳解

    Python綁定方法與非綁定方法詳解

    這篇文章主要為大家詳細 介紹了Python綁定方法與非綁定方法的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • YOLOv5車牌識別實戰(zhàn)教程(二)理論基礎(chǔ)

    YOLOv5車牌識別實戰(zhàn)教程(二)理論基礎(chǔ)

    這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(二)理論基礎(chǔ),在這個教程中,我們將一步步教你如何使用YOLOv5進行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下
    2023-04-04
  • python 制作磁力搜索工具

    python 制作磁力搜索工具

    這篇文章主要介紹了如何用python 制作磁力搜索工具,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03

最新評論