前言:mysql
51cto的文章已經再也不補充更新了,另外celery rabbitmq詳細的使用方法請到這裏瀏覽.web
爲啥要用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 附加包便可。
官方說,他們在用 ~