1、背景python
最近因項目須要,學習任務隊列Celery的用法;web
2、測試使用環境:redis
1.Windows7 x64django
2.Python == 3.7.5flask
3.celery == 4.3.0windows
4.redis =3.3.11服務器
5.eventlet==0.25.1 ==> pip install eventlet (windows環境必須安裝)app
6.IDE爲pycharm框架
3、關於celery的安裝和卸載處理
pip install celery #安裝函數
pip install celery == 3.1.25 #指定安裝版本
pip uninstall celery #卸載
4、Celery分爲3個部分
1.worker部分負責任務的處理,即工做進程(個人理解工做進程就是你寫的python代碼,固然還包括python調用系統工具功能)
2.broker部分負責任務消息的分發以及任務結果的存儲,這部分任務主要由中間數據存儲系統完成,好比消息隊列服務器RabbitMQ、redis、
3.Celery主類,進行任務最開始的指派與執行控制,他能夠是單獨的python腳本,也能夠和其餘程序結合,應用到django或者flask等web框架裏面以及你能想到的任何應用
5、上代碼:
1.建立Celery實例tasks.py:
# -*- coding: utf-8 -*-
# 使用celery
import time
from celery import Celery
import redis
# 建立一個Celery類的實例對象
app = Celery('celery_tasks.tasks', broker='redis://:topsky@127.0.0.1:6379/1')
@app.task
def add(a, b):
count = a + b
print('任務函數正在執行....')
time.sleep(5)
return count
2.調用celery任務代碼:
from celery_tasks.tasks import add
def notity(a, b):
# result = a + b
result = add.delay(a, b)
return result
if __name__ == '__main__':
result = notity(3, 5)
print(result)
6、執行worker
1.建立一個worker,等待處理隊列中的任務,打開Windows PowerShell終端以管理員身份運行,cd到E:\SvnCode\myCode目錄中,
2.執行命令: celery -A celery_tasks.tasks worker -l info -P eventlet
參數解釋,命令中-A參數表示的是Celery APP的名稱celery_tasks,這個實例中指的就是tasks.py,後面的tasks就是APP的名稱,worker是一個執行任務角色,後面的loglevel=info記錄日誌類型默認是info,這個命令啓動了一個 worker, 用來執行程序中add這個加法任務(task),-P eventlet是防止在windows環境下出現