02.任务队列和中间人

上一篇介绍Celery是处理任务队列的分布式系统,那么什么是任务队列?

任务队列

任务队列是一种分配工作到线程或者计算机的一种机制。
任务队列的输入是叫任务的工作单元,worker进程会不断监视任务队列进行新的工作。
Celery使用消息通信,通常在client和worker之间有个中间人(broker),新加入一个任务客户端会发送一个消息到任务队列,然后中间人会把消息传递给worker。
Celery系统由多个worker和broker组成,高可用,横向扩展性强。
可以实现语言间的相互调用,通过暴露HTTP接口请求一个任务。
Celery可以运行在单个、多个机器,甚至是数据中心。

使用Redis作为broker

Celery支持两种稳定的broker,分别是RabbitMQ和Redis。本系列文章使用Redis作为broker和backend,backend后续介绍。
可以专门安装带redis依赖的celery pip install celery[redis]
如果使用过pip install celery就不需要安装了。

#配置使用redis的broker很容易
from celery import Celery
#第一种方法,在创建Celery实例时作为参数传递
app = Celery("projectName",broker="redis://localhost:6379/0")
#第二种通过配置broker_url配置项设置
app.conf.broker_url = "redis://localhost:6379/0"
'''
URL格式为:
redis://:password@IPorHost:port/dbNumber
如果对应部分没填写默认redis://localhost:6379/0
比如“redis://”、“redis://localhost”...
'''

Celery执行异步任务的时自身并不存储结果和状态的,想要获得返回结果和状态需要配置结果后端(result backend)用来存储结果和状态。

from celery import Celery
#第一种和broker一样,当参数传递到Celery
app = Celery("pName",broker="redis://", backend="redis://")
#第二种,使用配置参数result_backend
app.conf.result_backend = "redis://"
'''
URL格式同broker格式一样
'''

参考文档
http://docs.celeryproject.org/en/latest/getting-started/brokers/redis.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值