一、什麼是Celery?
Celery是一個自帶電池的分布式任務隊列。
二、什麼是任務隊列?(task queue)
1、任務隊列是一種線上程或機器間分發任務的機制。
2、消息隊列的輸入是工作的一個單元,稱為任務,獨立的職程(Worker)程序持續監視隊列中是否有需要處理的新任務。
3、Celery 用消息通信,通常使用中間人(Broker)在用戶端和職程間斡旋。這個過程從用戶端向隊列添加消息開始,之後中間人把消息派送給職程。
什麼是職程?什麼是Broker?
三、用redis作為中間人(Broker)
1、安裝celery及redis依賴
pip install "celery[redis]"
2、在django的settings.py中配置redis資料庫的位置
app.conf.broker_url = 'redis://localhost:6379/0'
3、在django的每個需要使用celery的app中添加一個tasks.py檔案,檔案名固定,不可改。
- Celery()包含兩個參數,第一個參數為目前子產品名稱,此參數是必須的。
-
第二個參數是broker的URL,redis對應的URL格式為:
redis://:[email protected]:port/db_number
- 定義一個名為add的單一任務。
from celery import Celery
app = Celery('tasks', broker=' redis://:[email protected]:port/db_number')
@app.task
def add(x, y):
return x + y