Celery

05.談談對Celery的理解

高級 Django


  Celery是由Python開發、簡單、靈活、可靠的分佈式任務隊列,其本質是生產者消費者模型,生產者發送任務到消息隊列,消費者負責處理任務。 Celery側重於實時操作,但對調度支持也很好,其每天可以處理數以百萬計的任務。

特點:

簡單:熟悉celery的工作流程後,配置使用簡單

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

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

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

詳情

返回目錄


06.Celery有哪些應用場景

高級 Django

  1. 異步任務:當用戶在網站進行某個操作需要很長時間完成時,我們可以將這種操作交給Celery執行,直接返回給用戶,等到Celery執行完成以後通知用戶,大大提好網站的併發以及用戶的體驗感。例如:發送驗證郵件
  2. 定時任務:向定時清除沉餘數據或批量在幾百臺機器執行某些命令或者任務,此時Celery可以輕鬆搞定。

詳情

返回目錄


07.Celery的工作原理是什麼

高級 Django

Celery由以下三部分構成:消息中間件(Broker)、任務執行單元Worker、結果存儲(Backend),如下圖:
在這裏插入圖片描述

工作原理
任務模塊Task包含異步任務和定時任務。其中,異步任務通常在業務邏輯中被觸發併發往消息隊列,而定時任務由Celery Beat進程週期性地將任務發往消息隊列;
任務執行單元Worker實時監視消息隊列獲取隊列中的任務執行;
Woker執行完任務後將結果保存在Backend中;


消息中間件Broker

  消息中間件Broker官方提供了很多備選方案,支持RabbitMQ、Redis、Amazon SQS、MongoDB、Memcached 等,官方推薦RabbitMQ。

任務執行單元Worker

  Worker是任務執行單元,負責從消息隊列中取出任務執行,它可以啓動一個或者多個,也可以啓動在不同的機器節點,這就是其實現分佈式的核心。

結果存儲Backend

  Backend結果存儲官方也提供了諸多的存儲方式支持:RabbitMQ、 Redis、Memcached,SQLAlchemy, Django ORM、Apache Cassandra、Elasticsearch。

詳情

返回目錄


發佈了65 篇原創文章 · 獲贊 39 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章