1,生成worker並執行任務
celery worker -A s1 -l info -n workerA.%h celery worker -A s1 -l info -n workerB.%h
若是想要執行指定的任務 須要:
celery -A tasks worker -l info -n workerA.%h -Q for_task_A celery -A tasks worker -l info -n workerB.%h -Q for_task_B
通過測試,若是不指定任務,那麼將分配隨機的worker去執行queue任務隊列中的任務
2,celery 架構
Celery Beat:任務調度器,Beat進程會讀取配置文件的內容,週期性地將配置中到期須要執行的任務發送給任務隊列。
Celery Worker:執行任務的消費者,一般會在多臺服務器運行多個消費者來提升執行效率。
Broker:消息代理,或者叫做消息中間件,接受任務生產者發送過來的任務消息,存進隊列再按序分發給任務消費方(一般是消息隊列或者數據庫)。
Producer:調用了Celery提供的API、函數或者裝飾器而產生任務並交給任務隊列處理的都是任務生產者。
Result Backend:任務處理完後保存狀態信息和結果,以供查詢。Celery默認已支持Redis、RabbitMQ、MongoDB、Django ORM、SQLAlchemy等方式。
3,celery命令列表
Options(選項):
-A APP, --app=APP app instance to use (e.g. module.attr_name)-本次操做使用的App實例。
-b BROKER, --broker=BROKER -消息代理(服務器),用於傳遞數據的URL。
url to broker. default is 'amqp://guest@localhost//'
--loader=LOADER name of custom loader class to use. - 自定義載入類的名稱。
--config=CONFIG Name of the configuration module-配置模塊的名稱。
--workdir=WORKING_DIRECTORY- 工做目錄。
Optional directory to change to after detaching.
-C, --no-color -非彩色顯示。
-q, --quiet -靜默執行。
--version show program's version number and exit-顯示版本號。
-h, --help show this help message and exit -顯示本幫助。
關於一些坑!!!https://www.jianshu.com/p/807efde55d81數據庫
cel.conf.imports = ['celery_task.s1']