1. 程式人生 > >7,知識拾遺-Wusir-crm項目-celery初識-celery案例

7,知識拾遺-Wusir-crm項目-celery初識-celery案例

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文件

import
time 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案例