celery 基礎教程(二):簡單實例


前言

使用celery包含三個方面:1. 定義任務函數。2. 運行celery服務。3. 客戶應用程序的調用。

實例一:

#1. 定義任務函數

創建一個文件 tasks.py輸入下列代碼:

from celery import Celery #導入Celery

broker = 'redis://127.0.0.1:6379/5' # 設置broker

backend = 'redis://127.0.0.1:6379/6' # 設置backend

app = Celery('tasks', broker=broker, backend=backend) # 實例化celery

# 編寫任務
@app.task
def add(x, y):

    return x + y

上述代碼導入了celery,然后創建了celery 實例 app,實例化的過程中指定了任務名tasks(和文件名一致),傳入了broker和backend。然后創建了一個任務函數add

#2. 運行celery服務

下面啟動celery服務。在當前命令行終端運行(分別在 env1 和 env2 下執行):

celery -A tasks worker  --loglevel=info

目錄結構 (celery -A tasks worker --loglevel=info 這條命令當前工作目錄必須和 tasks.py 所在的目錄相同。即 進入tasks.py所在目錄執行這條命令。

 

 使用 python 虛擬環境 模擬兩個不同的 主機。

 

 此時會看見一對輸出。包括注冊的任務啦。

#3. 客戶應用程序的調用。

3.1 交互式客戶端程序調用方法

打開一個命令行,進入Python環境。

 

 

調用 delay 函數即可啟動 add 這個任務。這個函數的效果是發送一條消息到broker中去,這個消息包括要執行的函數、函數的參數以及其他信息,具體的可以看 Celery官方文檔。這個時候 worker 會等待 broker 中的消息,一旦收到消息就會立刻執行消息。

啟動了一個任務之后,可以看到之前啟動的worker已經開始執行任務了。

現在是在python環境中調用的add函數,實際上通常在應用程序中調用這個方法。

注意:如果把返回值賦值給一個變量,那么原來的應用程序也會被阻塞,需要等待異步任務返回的結果。因此,實際使用中,不需要把結果賦值。

3.2應用程序中調用方法

新建一個 main.py 文件 代碼如下:

from tasks import add

r = add.delay(2, 2)

r = add.delay(3, 3)

print(r.ready())

print(r.result)

print(r.get())

 

 在celery命令行可以看見celery執行的日志。打開 backend的redis,也可以看見celery執行的信息。

實例二:

首先要有一個main文件

再者要有一個config文件

然后就是任務執行文件

如圖 celery的目錄

 

 

 main.py 文件

 

 config.py文件

 

  tasks.py文件

 

 

 最后

celery服務的開啟命令

celery -A celery_tasks.email.tasks worker -l info 

注意:celery_tasks.email.tasks 是該函數執行的路徑 填寫正確才能啟動celery服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM