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