python分布式任務佇列celery調研與實踐

2022-03-25 14:28:18 字數 1981 閱讀 4304

celery是乙個python編寫的分布式任務佇列,支援實時排程和定時排程。

對比crontab,celery的優勢如下:

平台可配置

分布式可監控

可指定任務執行

celery靈活是

是是crontab

不靈活,需要登陸機器單機否

否初始化環境

virtualenv env

source env/bin/activate

pip install -r requirements.txt

其中,依賴如下:

django1.8.2

celery3.1.18

celery-with-redis3.0

django-celery3.1.16

flower0.9.5

pymysql0.10.1

同步資料庫

python manage.py syncdb

然後建立superuser

python manage.py createsuperuser

啟動server

python manage.py runserver 0.0.0.0:8008

啟動多個worker(消費)

python manage.py celery worker -l info -n worker1

python manage.py celery worker -l info -n worker2

啟動beat(生產者)

python manage.py celery beat -l info

啟動監控:

flower -a mysite 5555

任務繼承

可以建立乙個任務的基類,實現類似於錯誤處理等通用方法。

class mytask(celery.task):

def on_failure(self, exc, task_id, args, kwargs, einfo):

print(' failed: '.format(task_id, exc))

# 發郵件/企微給負責人

@task(base=mytask)

def add(x, y):

raise keyerror()

pip install flower

flower -a mysite 5555

文件:關鍵api:

通過名稱來執行task

消費者例項:

任務執行歷史:

監控效果,可以看到成功數,失敗數,執行時長和堆積的任務數:

分布式任務佇列Celery

celery 芹菜 是基於python開發的分布式任務佇列。它支援使用任務佇列的方式在分布的機器 程序 執行緒上執行任務排程。基本用法是在程式裡引用celery,並將函式方法繫結到task from celery import celery def add x,y return x y from t...

python Celery分布式任務佇列

celery是乙個簡單,靈活且可靠的分布式系統,可以處理大量訊息,同時為操作提供維護該系統所需的工具。這是乙個任務佇列,著重於實時處理,同時還支援任務排程。celery通過訊息進行通訊,通常使用 在客戶端和工作人員之間進行調解。為了啟動任務,客戶端將訊息新增到佇列中,然後 將訊息傳遞給工作人員 ce...

Celery分布式任務佇列

celery是乙個簡單 靈活且可靠的,處理大量訊息的分布式系統 專注於實時處理的非同步任務佇列 同時也支援任務排程 celery的架構由三部分組成,訊息中介軟體 message broker 任務執行單元 worker 和任務執行結果儲存 task result store 組成。訊息中介軟體 ce...