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...