Celery基本介紹

在這裏插入圖片描述

項目開發中經常碰到需要使用異步任務的場景,比如一個WEB請求中有運行時間很長的業務運算,如果不採用異步任務,會阻塞當前的web請求,影響用戶體驗。

celery是python的一個分佈式任務調度模塊,由消息中間件broker、任務執行體worker、任務執行結果backend三部分組成。

celery通過消息中間件broker實現消息服務,通常broker使用rabbitMQ,redis等,搭建異步任務系統時需要部署相關的消息服務,比如選擇用redis,就需要部署redis-server。

任務執行體worker可以分佈式的部署到多個節點,比如多臺機器或多個docker中。

任務執行結果backend用於保存任務執行結果,通常使用redis、MongoDB等,仍然需要部署相關的服務。

藉助docker我們可以將celery與消息服務集成在一起,提供完整的異步任務執行體。

flower是python的一個專門用於監控celery的模塊,比如可以在web頁面實時顯示celery worker的狀態、任務的狀態等,最重要的,flower還提供了REST API用於方便第三方應用直接觸發任務執行、獲取任務執行結果等,這也極大地擴展了celery的應用範圍

celery應用舉例

  1. Celery 是一個 基於python開發的分佈式異步消息任務隊列,通過它可以輕鬆的實現任務的異步處理,如果你的業務場景中需要用到異步任務,就可以考慮使用celery
  2. 你想對100臺機器執行一條批量命令,可能會花很長時間 ,但你不想讓你的程序等着結果返回,而是給你返回 一個任務ID, 你過一段時間只需要拿着這個任務id就可以拿到任務執行結果, 在任務執行ing進行時,你可以繼續做其它的事情
  3. Celery 在執行任務時需要通過一個消息中間件來接收和發送任務消息,以及存儲任務結果, 一般使用rabbitMQ or Redis

Celery有以下優點

1、簡單:一單熟悉了celery的工作流程後,配置和使用還是比較簡單的

2、高可用:當任務執行失敗或執行過程中發生連接中斷,celery 會自動嘗試重新執行任務

3、快速:一個單進程的celery每分鐘可處理上百萬個任務

4、靈活: 幾乎celery的各個組件都可以被擴展及自定製

Celery基本工作流程圖

在這裏插入圖片描述
      
    user:用戶程序,用於告知celery去執行一個任務。
    broker: 存放任務(依賴RabbitMQ或Redis,進行存儲)
    worker:執行任務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章