一、celery簡介
1、celery 分布式任務佇列
2、celery 是一款非常簡單、靈活、可靠的分布式系統,可用於處理大量訊息,並且提供了一整套操作此系統的一系列工具。
3、celery 是一款訊息佇列工具,可用於處理實時資料以及任務排程。
4、celery 通過訊息機制進行通訊,通常使用中間人(broker)作為客戶端和職程(worker)調節。啟動乙個任務,
客戶端向訊息佇列傳送一條訊息,然後中間人(broker)將訊息傳遞給乙個職程(worker),最後由職程(worker)進行執行中間人(broker)分配的任務。
5、celery 可以有多個職程(worker)和中間人(broker),用來提高celery的高可用性以及橫向擴充套件能力。
二、版本需求(這個是要注意一下)
1、python版本:python 3.6.8
2、celery版本:5.1.2
一開始我是用的是python3.7,然後發現各種坑,經多方查證發現是python版本高了
三、簡單使用
**我們最終肯定是想將celery使用與專案中,所以我們直接略過最簡單的使用
**目前celery使用的是redis,所以redis的安裝可以參考其他,例如菜鳥教程。建議使用docker容器啟動,簡單方便
1、關於celery的檔案布局:
celery_demo:可以理解為專案資料夾,
--proj:celery的資料夾,相關的配置檔案,定義celery,包括任務,主要就是這些了
--celeryconfig.py:celery的配置檔案
--celery:celery啟動**
--tasks.py:存放任務,沒有特殊要求,可以就採用該檔名
--zhixing.py:呼叫celery的任務
2、關於celeryconfig.py配置檔案簡單講解:
#3、celery檔案**簡單講解coding=utf-8
broker_url = '
redis:'#
redis 儲存傳送端來的任務佇列
result_backed = '
redis:'#
用redis儲存執行端執行得到結果
#4、tasks.py任務檔案:coding=utf-8
from . import celeryconfig #
注意導包方式,celery對於這個比較敏感
from celery import
celery
"proj",
include=['
proj.tasks
'] #
此處是tasks任務)#
使用配置檔案
if__name__ == "
__main__
":
#5、zhixing.py檔案:coding=utf-8
import
time
from .celery import
def add(x=3, y=4):
return x +y
defmul(x, y):
return x * y
#6、演示:coding=utf-8
import
time
from proj.tasks import
adddef
start():
res = add.delay(4,4)
(res)
if__name__ == "
__main__":
start()
①、啟動celery:celery -a proj worker -l info
②、執行呼叫**
celery 分布式框架詳解
如果沒有celery,讓你自己設計乙個非同步任務佇列你怎麼做。首先,要有乙個發起任務的client,選定一定儲存任務資訊的媒介,由乙個worker去一直監聽這個資訊媒介,這個worker最好是多程序的,另外可以相容盡可能多得資訊媒介。好吧,這個不就是celery所做的事兒麼,celery相容多個br...
celery分布式使用
celery包含如下元件 1.celery beat 任務排程器,beat程序會讀取配置檔案的內容,周期性地將配置中到期需要執行的任務傳送給任務佇列 一般用於定時任務使用 2.celery worker 執行任務的消費者,通常會在多台伺服器執行多個消費者來提高執行效率。3.broker 訊息 或者叫...
Python 並行分布式框架 Celery
celery 芹菜 是基於python開發的分布式任務佇列。它支援使用任務佇列的方式在分布的機器 程序 執行緒上執行任務排程。架構設計 celery的架構由三部分組成,訊息中介軟體 message broker 任務執行單元 worker 和任務執行結果儲存 task result store 組成...