天天看點

一、Celery簡介一、什麼是Celery?二、什麼是任務隊列?(task queue)三、用redis作為中間人(Broker)

一、什麼是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