celery配合rabbitmq任務隊列實現任務的異步調度執行[celery redis]

前言:mysql


51cto的文章已經再也不補充更新了,另外celery rabbitmq詳細的使用方法請到這裏瀏覽.web


http://xiaorui.cc/2014/11/16/celery-rabbitmq%E5%AE%9E%E7%8E%B0%E4%BB%BB%E5%8A%A1%E9%98%9F%E5%88%97%E7%9A%84%E5%BC%82%E6%AD%A5%E6%89%A7%E8%A1%8C/
redis



爲啥要用celery ?sql

在個人應用下,能夠把他異步到後臺執行,想起來了,把他調到前面。mongodb


和rabbitmq又有啥關係?數據庫

和rabbitmq的關係只是在於,celery沒有消息存儲功能,他須要介質,好比rabbitmq redis mysql mongodb 都是能夠的。有這個可控的東西,你也能夠在庫裏面搞搞。推薦使用rabbitmq,他的速度和可用性都很高,redis這東西就怕意外,固然你運氣很好,不怕他意外的掛掉,是能夠用的。
django


Celery和RabbitMQ是兩個層面的東西。
Celery是一個分佈式的任務隊列。它的基本工做就是管理分配任務到不一樣的服務器,而且取得結果。至於說服務器之間是如何進行通訊的?這個Celery自己不能解決。
因此,RabbitMQ做爲一個消息隊列管理工具被引入到和Celery集成,負責處理服務器之間的通訊任務。
服務器

固然,後來Celery相繼增長了一些對Redis,MongoDB之類的支持。緣由是RabbitMQ儘管足夠強大,但對於一些相對簡單的業務環境來講可能太多(複雜)了一些。這樣用戶能夠有多一些的選擇。異步


celery的介紹分佈式

Celery(芹菜)是一個異步任務隊列/基於分佈式消息傳遞的做業隊列。它側重於實時操做,但對調度支持也很好。

celery用於生產系統天天處理數以百萬計的任務。


celery是用Python編寫的,但該協議能夠在任何語言實現。它也能夠與其餘語言經過webhooks實現。


建議的消息代理RabbitMQ的,但提供有限支持Redis, Beanstalk, MongoDB, CouchDB, ,和數據庫(使用SQLAlchemy的或Django的 ORM) 。


celery是易於集成Django, Pylons and Flask,使用 django-celery, celery-pylons and Flask-Celery 附加包便可。

官方說,他們在用 ~

074432221.jpg

相關文章
相關標籤/搜索