Python Celery初研究

來源:互聯網
上載者:User

標籤:工作環境   python   result   single   第三方   

最近,換了一個工作環境去做研究,當然啦,新公司新作風,需要研究python並行分布式架構:Celery,不用多說,幹唄。


然後就抽空看了一下,果然介面簡單,開發容易,5分鐘就寫出了一個非同步發送郵件的服務。

Celery本身不含Message Service,它使用第三方Message Service來傳遞任務,目前,Celery支援的Message Service有RabbitMQ、Redis甚至是資料庫,當然Redis應該是最佳選擇。


  • 任務執行單元

    Worker是Celery提供的任務執行的單元,worker並發的運行在分布式的系統節點中。

  • 任務結果儲存

    Task result store用來儲存Worker執行的任務的結果,Celery支援以不同方式儲存任務的結果,包括AMQP, Redis,memcached, MongoDB,SQLAlchemy, Django ORM,Apache Cassandra, IronCache

另外, Celery還支援不同的並發和序列化的手段

  • 並發

    Prefork, Eventlet, gevent, threads/single threaded

  • 序列化

    pickle, json, yaml, msgpack. zlib, bzip2 compression, Cryptographic message signing 等等




不廢話,上初步研究的代碼:

import sysreload(sys)import timefrom celery import Celeryapp = Celery(‘tasks‘, broker = ‘redis://localhost:6379/0‘)@app.task()def sendmail(mail):    print(‘sending mail to %s...‘ % mail[‘to‘])    time.sleep(2.0)    print(‘mail sent.‘)

我是直接連的redis。


然後啟動Celery處理任務:

celery -A tasks worker --loglevel=info


上面的命令列實際上啟動的是Worker,如果要放到後台運行,可以扔給supervisor。

如何發送任務?非常簡單:

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/8F/7D/wKioL1jhUDPj95uTAAR1BuJDw7E298.png-wh_500x0-wm_3-wmp_4-s_2576684765.png" title="深度20170403032501.png" alt="wKioL1jhUDPj95uTAAR1BuJDw7E298.png-wh_50" />


可以看到,Celery的API設計真的非常簡單。

然後,在Worker裡就可以看到任務處理的訊息:

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/8F/7F/wKiom1jhUH2AT-NgAAS4nmOeEXs818.png-wh_500x0-wm_3-wmp_4-s_1934919965.png" title="深度20170403032629.png" alt="wKiom1jhUH2AT-NgAAS4nmOeEXs818.png-wh_50" />

這裡我們可以發現,每一個task有一個唯一的ID,task非同步執行在worker上。


Celery預設設定就能滿足基本要求。Worker以Pool模式啟動,預設大小為CPU核心數量,預設序列化機制是pickle,但可以指定為json。由於Python調用UNIX/Linux程式實在太容易,所以,用Celery作為非同步任務架構非常合適。

Celery還有一些進階用法,比如把多個工作群組合成一個原子任務等,還有一個完善的監控介面,以後有空再繼續研究。





本文出自 “Microsoft” 部落格,請務必保留此出處http://1238306.blog.51cto.com/1228306/1912637

Python Celery初研究

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.