7,知識拾遺-Wusir-crm項目-celery初識-celery案例
阿新 • • 發佈:2019-01-03
article delay xxxxxx 應對 ima tasks span sta 命令
7,知識拾遺-Wusir-crm項目-celery初識-celery案例
參考博客:
https://www.cnblogs.com/wupeiqi/articles/8796552.html
什麽情況下使用celery:
一個請求的處理時間特別長
先進行安裝:
pip3 install celery
pip3 install eventlet
-
user:用戶程序,用於告知celery去執行一個任務。
-
broker: 存放任務(依賴RabbitMQ或Redis,進行存儲)
-
worker:執行任務
/
依賴redis做消息隊列(存放任務和結果)
//
//
worker 需要先啟動起來,等待著任務的到來, 執行以下命令 celery worker-A s1 -l info #在cmd裏執行,s1是py文件名,-l是打印日誌,info是日誌的分類,這是在linux跟mac的命令 可以在cmd裏面多次運行該命令, 應對大量的請求, 在window下,需要安裝eventlet模塊, celery worker -A s1 -l info -P eventlet #執行此命令,worker就啟動起來了,取到任務,然後去執行
執行以下命令,
celery worker -A s1 -l info -P eventlet #建議在linux使用celery
cmd顯示如圖所示,
//
s1.py文件
importtime from celery import Celery #假如redis有密碼的話,[email protected]:6379 xxx就是密碼 app = Celery(‘tasks‘, broker=‘redis://127.0.0.1:6379‘, backend=‘redis://127.0.0.1:6379‘) @app.task def xxxxxx(x, y): time.sleep(10) return x + y
s2.py文件
import s1 result=s1.xxxxxx.delay(8,67) #將任務及參數,交給redis隊列,worker拿到去執行 print(result) #執行這個文件,就是相當於執行任務 #返回一個隨機字符串,實際上是對象,1f316713-d792-4e87-9b2a-06db5005071e
執行s2.py文件之後
進redis查看結果,
/
celery模擬12306買票的例子
//
7,知識拾遺-Wusir-crm項目-celery初識-celery案例