Python 并行分布式框架爱——celery 详解

先来上一张celery框架图解:


Celery的架构由三部分组成,消息中间件(brokers),任务执行单元(worker),和任务执行结果存储(task result store)组成。

消息中间件

Celery本身不提供消息服务,但是可以方便和第三方提供的消息中间件集成,包括,RabbitMq,redis,MongoDB,Ironmq,Django orm,

执行任务单元

Woreker是celery提供的执行任务的单元,worker并发的运行在分布式系统的节点中。

任务结果存储

Task result store用来存储worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP.redis,memcached,mongodb,sqlalchemy,django orm,apache  ,Ironcache


此处我们使用rabbitmq,

启动管理插件:sbin/rabbitmq-plugins enable rabbitmq_management

启动rabbitmq:sbin/rabbitmq-server-detached


安装celery   :建议使用virtualenv

首先,定义一个task。

from celery import Celery

app=Celery('tasks',backend='amqp://guest@localhost//',broker='amqp://guest@localhost//')

@app.task

def add(x,y):

        return x+y

保存为tasks.py

——>broker就是中间件了,backend就是后端来发送状态消息,保持追踪任务的状态,存储或发送这些状态。

现在另开一个虚拟环境,ipython

from tasks import add

result = add.delay(6,7)

现在你可以用之前的命令启动的终端看到结果。

使用Celery

Celery是一个实时处理和任务调度的分布式任务队列,所谓任务就是消息,消息中的有效载荷中包含要执行任务需要的全部数据。

使用celery的常见场景如下:

1.web应用。当用户出发一个操作需要较长时间才能执行完成,可以把它作为任务教给Celery去异步执行,执行完再返回给用户。这时候用户需要等待,这样就提高了网站的吞吐量和响应时间。


2.定时任务。生产环境经常会跑一些定时任务。假如你有上千台服务器、上千种任务,定时任务的管理很困难,Celery可以帮助我们再不同机器上设定不同种任务。

3.同步完成的附加操作可都可以异步完成。比如发送邮件、推送消息、清理/设置缓存等。




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值