celery简介

Celery是Python开发的分布式任务调度模块。

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

 

l  消息中间件:Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成,包括RabbitMQ, Redis,MongoDB(experimental), Amazon SQS(experimental),CouchDB (experimental), SQLAlchemy (experimental), Django ORM(experimental),IronMQ;

l  任务执行单元:Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中;

l  任务结果存储:Taskresult store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP,redis,memcached, MongoDB,SQLAlchemy, Django ORM,Apache Cassandra, IronCache。


简单介绍了celery理论,下面我们用celery+redis做个小示例

1. 安装redis并启动

2. 编写mytask.py:

import time
from celery import Celery

app = Celery('mytask', backend='redis://localhost', broker='redis://localhost')

@app.task
def add(x, y):
    for i in range(10):
        time.sleep(10)
    return x + y

3. 启动celery

执行命令:

celery -A mytask worker --loglevel=info

4. 调用add方法:

>>> from mytask import add
>>> 
>>> result = add.delay(1,2)
>>> 
>>> result.ready()
False
>>> 
>>> result.ready()
True
>>> result.get()
3


等待100秒后,result.ready()为True时,调用get()方法,获取执行结果。同样,在redis中,也能查询到执行结果:

先看启动celery终端的task_id:



在redis中查看结果:



这只是celery的皮毛,想要把它用到项目中去,还得详细了解,包括redis等,后续再详细了解。


结束!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值