第1步:安裝celery與redis
警告:在pip install celery后執(zhí)行 celery -A 你的項(xiàng)目名 worker --pool=solo -l info 報(bào)下圖一錯(cuò)誤浅蚪,建議執(zhí)行 pip install --upgrade https://github.com/celery/celery/tarball/master 執(zhí)行完后再次執(zhí)行 celery -A 你的項(xiàng)目名 worker --pool=solo -l info 就會(huì)出現(xiàn)圖二樣式
Mac OS X 安裝
$ brew install Redis # Redis 安裝,需提前安裝 brew
$ pip install celery # pip 安裝celery庫(kù)
$ pip install redis # pip 安裝 redis庫(kù)
如果您沒(méi)有安裝 brew,建議您先安裝 brew 參考 brew安裝
Ubuntu 安裝
$ sudo apt install redis # Redis 安裝
$ pip install celery # pip 安裝celery庫(kù)
$ pip install redis # pip [安裝 redis庫(kù)](https://www.cnblogs.com/zuidongfeng/p/8032505.html)
Linux 安裝
請(qǐng)?jiān)L問(wèn) redis 下載 最新的安裝包摔握,本文使用的是在書寫本文這個(gè)時(shí)間時(shí)最新的安裝包箩退,如官方發(fā)布更新囱持,恕本文不另行通知更改履婉。
$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz
$ tar xzf redis-4.0.9.tar.gz
$ cd redis-4.0.9
$ make
# make完后 redis-4.0.9 目錄下會(huì)出現(xiàn)編譯后的redis服務(wù)程序redis-server,還有用于測(cè)試的客戶端程序redis-cli,兩個(gè)程序位于安裝目錄 src 目錄下:
# 下面啟動(dòng)redis服務(wù).
$ cd src
$ ./redis-server
Windows 安裝 參考菜鳥教程-Redis 安裝
下載地址:https://github.com/MSOpenTech/redis/releases蚀腿。
Redis 支持 32 位和 64 位程癌。這個(gè)需要根據(jù)你系統(tǒng)平臺(tái)的實(shí)際情況選擇舷嗡,這里我們下載 Redis-x64-xxx.zip壓縮包到 C 盤,解壓后嵌莉,將文件夾重新命名為 redis进萄。
打開一個(gè) cmd 窗口 使用cd命令切換目錄到 C:\redis 運(yùn)行 redis-server.exe redis.windows.conf 。
如果想方便的話,可以把 redis 的路徑加到系統(tǒng)的環(huán)境變量里垮斯,這樣就省得再輸路徑了郎仆,后面的那個(gè) redis.windows.conf 可以省略,如果省略兜蠕,會(huì)啟用默認(rèn)的扰肌。輸入之后,會(huì)顯示如下界面:
第2步:編寫代碼
1在settings.py中加入
CELERY_BROKER_URL = 'redis://localhost'
#: Only add pickle to this list if your broker is secured
#: from unwanted access (see userguide/security.html)
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'redis://localhost'
CELERY_TASK_SERIALIZER = 'json'
2編寫任務(wù):
import time
from celery import Celery
app = Celery('tasks', broker='redis://localhost', backend='redis://localhost')
@app.task
def add(x, y):
time.sleep(15) #使用sleep表示耗時(shí)操作
print(2)
return x+y
3在視圖中調(diào)用tasks
from django.http import HttpResponse
from .tasks import add, add2
def testCelery(request):
print(add.delay(4, 4))
print(add2.delay(5, 4))
print('成功')
return HttpResponse('成功')
4在url中注冊(cè)接口
from django.contrib import admin
from django.urls import path
from testCelery.views import testCelery
urlpatterns = [
path('admin/', admin.site.urls),
path('testCelery/', testCelery)
]
第3步:?jiǎn)?dòng)redis熊杨、celery曙旭、django
1:?jiǎn)?dòng)redis
切換到redis安裝目錄下執(zhí)行:redis-server.exe redis.windows.conf
2:?jiǎn)?dòng)celery
執(zhí)行
celery -A untitled1 worker --pool=solo -l info
3:?jiǎn)?dòng)django
第4步:調(diào)用接口
只耗時(shí)56ms,
celery任務(wù)耗時(shí)16秒,從而實(shí)現(xiàn)異步
源碼
優(yōu)質(zhì)博客1
優(yōu)質(zhì)博客2
第5步:實(shí)現(xiàn)flower 對(duì)celery進(jìn)行監(jiān)控
1: 安裝
pip install flower
2:啟動(dòng)flower
假設(shè)在server2上啟動(dòng)flower晶府,flower默認(rèn)的端口是5555.
celery flower -A 項(xiàng)目名字 --address=服務(wù)器ip --port=5555
3:監(jiān)控界面
在瀏覽器上輸入 http://server2_ip:5555, 可以看到如下界面:
************************----------------------分割線---------------------*********************