Celery學習筆記(一)

Celery學習筆記(一)

什麼是Celery

Celery是一個python模塊,它在官網的定義:
Celery is asynchronous task queue/job based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.
這裏強調的概念包括:異步任務隊列 / 分佈式消息傳遞 / 實時或調度任務,下面對這些概念分別做解釋

爲什麼要使用Celery

Celery是一個使用Python開發的分佈式任務調度模塊,因此對於大量使用Python構建的系統,可以說是無縫銜接,使用起來很方便。Celery專注於實時處理任務,同時也支持任務的定時調度。因此適合實時異步任務定時任務等調度場景。

Celery任務隊列

任務隊列是一種在進程或機器之間分發任務的機制。
任務隊列的輸入是被稱爲任務(task)的工作單元。專用的工作進程會時刻監控任務隊列,來獲取要執行的任務。
celery的client和worker通過消息來“溝通“。Celery需要依靠RabbitMQ等作爲消息代理,同時也支持Redis甚至是Mysql,Mongo等,當然,官方默認推薦的是RabbitMQ。
爲了開始一個任務,client需要向隊列中發送任務消息,然後broker會把任務投遞給worker處理。一個celery系統可以包含多個worker和broker,以便實現高可用和可水平擴展。

celery的架構

如何安裝Celery

選擇broker

RabbitMQ 功能完備、穩定、耐用,並且安裝簡便,是生產環境的絕佳選擇。
sudo apt-get install rabbitmq-server
命令執行完成後,中間人就已經運行在後臺,準備好傳輸消息
爲了方便之後分佈式部署的時候通過RabbitMQ進行溝通,我們需要創建一個 RabbitMQ 用戶、一個虛擬主機,並且允許這個用戶訪問這個虛擬主機:

$ sudo rabbitmqctl add_user myuser mypassword
$ sudo rabbitmqctl add_vhost myvhost
$ sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

RabbitMQ的Python客戶端選擇librabbitmq這個C庫。

分佈式的時候:一定要顯式指定rabbitMQ的用戶名,密碼,server的IP,虛擬主機。
eg:
broker=’amqp://danny:[email protected]:5672/myvhost’

否則在worker開始工作的時候會出現如下錯誤:ACCESS_REFUSED Login was refused

安裝celery

Celery 提交到了 Python Package Index(PyPI)上,所以你可以用標準的 Python 工具,諸如 pip 或 easy_install 來安裝:
$ pip install celery

更詳細的Celery架構圖

更詳細的Celery架構圖

Celery入門使用方式

Celery學習筆記
Celery初步
celery集羣管理實現

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