1. 程式人生 > >celery 任務隊列 + redis

celery 任務隊列 + redis

htm 其他 https traceback host 完成 ply tar literal

Celery 是一個“自帶電池”的的任務隊列。它易於使用,所以你可以無視其所解決問題的復雜程度而輕松入門。它遵照最佳實踐設計,所以你的產品可以擴展,或與其他語言集成,並且它自帶了在生產環境中運行這樣一個系統所需的工具和支持。

在此教程中,你會了解使用 Celery 的最基礎部分。包括:

  • 選擇和安裝消息傳輸方式(中間人)。
  • 安裝 Celery 並創建第一個任務
  • 運行職程並調用任務。
  • 追蹤任務在不同狀態間的遷移,並檢視返回值。

選擇中間人

  Celery 需要一個發送和接收消息的解決方案,其通常以獨立服務形式出現, 稱為 消息中間人

  在此介紹redis數據庫 安裝數據庫請看另一篇文章:https://www.cnblogs.com/wbdream/p/10581310.html

安裝celery:

  安裝celery接口: pip3 install celery

應用:

首先你需要一個 Celery 實例,稱為 Celery 應用或直接簡稱應用。既然這個實例用於你想在 Celery 中做一切事——比如創建任務、管理職程——的入口點,它必須可以被其他模塊導入。

在此教程中,你的一切都容納在單一模塊裏,對於更大的項目,你會想創建 獨立模塊

讓我們創建 tasks.py

  

from celery import Celery

app = Celery(tasks, broker=redis://:password@localhost//
) @app.task def add(x, y): return x + y

Celery 的第一個參數是當前模塊的名稱,這個參數是必須的,這樣的話名稱可以自動生成。第二個參數是中間人關鍵字參數,指定你所使用的消息中間人的 URL,此處使用了 RabbitMQ,也是默認的選項。更多可選的中間人見上面的 選擇中間人 一節。例如,對於 RabbitMQ 你可以寫 amqp://localhost ,而對於 Redis 你可以寫 redis://localhost .

你現在可以用 worker 參數執行我們的程序:

  $ celery -A tasks worker -l debug   # -l debug 日誌級別

調用任務

你可以用 delay() 方法來調用任務。

這是 apply_async() 方法的快捷方式,該方法允許你更好地控制任務執行(見 Calling Tasks ):

>>> from tasks import add
>>> res = add.delay(4, 4)
>>> res.get() #獲取結構

ready() 方法查看任務是否完成處理:

>>> result.ready()
False

倘若任務拋出了一個異常, get() 會重新拋出異常, 但你可以指定 propagate 參數來覆蓋這一行為:

>>> result.get(propagate=False)

如果任務拋出了一個異常,你也可以獲取原始的回溯信息:

>>> result.traceback

 

celery 任務隊列 + redis