Celery 使用(一)
阿新 • • 發佈:2017-08-18
目錄 highlight tex lan div eight 周期性 就會 分發
Celery 使用(一)
架構
- Producer:任務發布者;
- Celery Beat:任務調度器,Beat進程會讀取配置文件中的內容,周期性的將配置中到期需要執行的任務發送給任務隊列;
- Broker:消息代理,接受生產者的任務消息,存進隊列後發送給消費者;
- Celery Worker:執行任務的消費者;
- Result Backend:保存消費者執行任務完後的結果;
使用
from celery import Celery app = Celery(‘tasks‘, backend=‘amqp‘, broker=‘amqp:[email protected]:5672//‘) @app.task def add(x, y): return x + y
from task2 import add result = add.delay(1,1) import time while not result.ready(): print(‘not yet ready‘) time.sleep(1) print(result.get())
celery -A task2.app worker --loglevel=info
疑惑
- Celery可以支持多種消息代理,不僅僅是RabbitMQ,還有Redis、MongoDB等等;
- RabbitMQ是消息隊列,其可以應用到各種場景中,包括任務分發系統,也就是需要自己實現一個Celery,而Celery本身就是一個任務分發系統,顯然簡化了代碼,不需要重復造輪子;
Celery 使用(一)