celery非同步分布式框架使用一

2022-09-20 19:33:07 字數 2081 閱讀 1988

一、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配置檔案簡單講解:

#

coding=utf-8

broker_url = '

redis:'#

redis 儲存傳送端來的任務佇列

result_backed = '

redis:'#

用redis儲存執行端執行得到結果

3、celery檔案**簡單講解

#

coding=utf-8

from . import celeryconfig #

注意導包方式,celery對於這個比較敏感

from celery import

celery

"proj",

include=['

proj.tasks

'] #

此處是tasks任務)#

使用配置檔案

if__name__ == "

__main__

":

4、tasks.py任務檔案:

#

coding=utf-8

import

time

from .celery import

def add(x=3, y=4):

return x +y

defmul(x, y):

return x * y

5、zhixing.py檔案:

#

coding=utf-8

import

time

from proj.tasks import

adddef

start():

res = add.delay(4,4)

print

(res)

if__name__ == "

__main__":

start()

6、演示:

①、啟動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 組成...