Python的Celery使用


第一章 Celery簡介

1、Celery是什么

1、Celery是python中使用比較多的並行分布式框架
2、Celery是一個簡單、靈活且可靠的,處理大量消息的分布式系統
3、Celery專注於實時處理的異步任務隊列
4、Celery同時也支持任務調度

2、Celery使用場景

celery是一個強大的分布式任務隊列的異步處理框架,它可以讓任務的執行完全脫離主程序,甚至可以被分配到其他主機上運行。我們通常使用它來實現異步任務(async task)和定時任務(crontab)。

  • 異步任務: 將耗時操作任務提交給Celery去異步執行,比如發送短信/郵件、消息推送、音視頻處理等等
  • 定時任務: 定時執行某件事情,比如每天數據統計

3 、Celery工作流程

 

 

4、Celery核心組件

Celery的架構由三部分組成,消息中間件(Broker),任務執行單元(Worker)和任務執行結果存儲(Result)組成。

  • 消息中間件(Broker)
    Broker負責創建任務隊列,根據一些路由規則將任務分派到任務隊列,然后將任務從任務隊列交付給worker
  • 任務執行單元(Worker)
    Worker是Celery提供的任務執行的單元,worker並發的運行在分布式的系統節點中,運行后台作業的進程
  • 任務結果存儲(Result)
    Result用來存儲Worker執行的任務的結果,Celery支持以不同方式存儲任務的結果,包括AMQP, Redis等

另外: Celery本身不提供消息服務,但是可以方便的和第三方提供的消息中間件集成。包括,RabbitMQ, Redis等等

其他: Celery還支持不同的並發、序列化和壓縮的手段

    • 並發:prefork、eventlet、gevent、threads
    • 序列化:pickle、json、yaml、msgpack 等
    • 壓縮:zlib,、bzip2

第二章 Celery安裝相關軟件

備注:我是在windows10環境下做的,Linux應該大同小異

1、Celery安裝

pip install celery

2、其他安裝

這里有個坑.win10系統啟動worker報錯ValueError: not enough values to unpack (expected 3, got 0),解決辦法:

pip install eventlet

Django中使用的時候,報錯 AttributeError: ‘str’ object has no attribute ‘items’。redis版本太高,降低版本 pip install redis==2.10.6

pip install redis==2.10.6

第三章 Celery代碼實現

1、Celery基本使用方法

備注:在這里,我使用的是redis作為消息中間件

 

 

 

 

參考

https://www.pythonf.cn/read/129031


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM