91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django中使用Celery 布式任務隊列過程詳解

發布時間:2020-09-28 21:13:47 來源:腳本之家 閱讀:188 作者:baagee 欄目:開發技術

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

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

它是一個專注于實時處理的任務隊列,同時也支持任務調度。

官方網站

中文文檔

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

示例二:網站每小時需要同步一次天氣預報信息,但是http是請求觸發的,難道要一小時請求一次嗎?

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

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

示例二的解決:使用celery定時執行

名詞

任務task:就是一個Python函數

隊列queue:將需要執行的任務加入到隊列中

工人worker:在一個新進程中,負責執行隊列中的任務

代理人broker:負責調度,在布置環境中使用redis

本示例在ubuntu系統中,使用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值是異步任務函數所在的位置,比如這個是bookstory應用里面的task.py文件里,如圖:

django中使用Celery 布式任務隊列過程詳解

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

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

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

# coding=utf-8

import time
from celery import task


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

4,遷移,生成celery需要的數據表

python manage.py migrate

5,啟動worker

python manage.py celery worker --loglevel=info

6,使用

新建一個視圖函數,并且分配一個url

from task import *

.........

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

調用語法就是:

function.delay(parameters)

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

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

django中使用Celery 布式任務隊列過程詳解

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会昌县| 黎平县| 镇平县| 军事| 辉南县| 义乌市| 铜鼓县| 陇川县| 塔河县| 柏乡县| 油尖旺区| 天峨县| 本溪| 轮台县| 道孚县| 中牟县| 伊吾县| 荣成市| 连云港市| 包头市| 四平市| 淮阳县| 广东省| 鄯善县| 泽库县| 合阳县| 凤冈县| 枣阳市| 莱州市| 太原市| 阿瓦提县| 芦山县| 铅山县| 四平市| 青海省| 聂荣县| 浮梁县| 阿勒泰市| 湖南省| 香格里拉县| 汤原县|