celery异步分布式

celery 异步分布式

  • Celery是一个python开发的异步分布式任务调度模块。Celery本身并不提供消息服务,使用第三方服务,也就是borker来传递任务,目前支持rebbimq,redis, 数据库等。

 

几个概念

Brokers

  • brokers 中文意思为中间人,在这里就是指任务队列本身,Celery 扮演生产者和消费者的角色,brokers 就是生产者和消费者存放/拿取产品的地方(队列) 常见的 brokers 有 rabbitmq、redis、Zookeeper 等

 

Result Stores / backend

  • 顾名思义就是结果储存的地方,队列中的任务运行完后的结果或者状态需要被任务发送者知道,那么就需要一个地方储存这些结果,就是 Result Stores 了。常见的 backend 有 redis、Memcached 甚至常用的数据都可以。

 

Workers

  • 就是 Celery 中的工作者,类似与生产/消费模型中的消费者,其从队列中取出任务并执行

 

Tasks

  • 就是我们想在队列中进行的任务咯,一般由用户、触发器或其他操作将任务入队,然后交由 workers 进行处理。

 

使用redis作为broker和backened

安装

  • 对 Redis 的支持需要额外的依赖。你可以用 celery[redis] 捆绑 同时安装 Celery 和这些依赖:
  • $ pip install -U celery[redis]

 

配置

  • 配置非常简单,只需要设置 Redis 数据库的位置:
  • BROKER_URL = 'redis://localhost:6379/0'
  • URL 的格式为:redis://:password@hostname:port/db_number
  • URL Scheme 后的所有字段都是可选的,并且默认为 localhost 的 6379 端口,使用数据库 0。

 

创建一个celery实例

  • 创建一个tasks.py文件,内容如下:
#!/usr/bin/env python

# coding:utf-8



from celery import Celery



broker = 'redis://127.0.0.1/0'

backened = 'redis://127.0.0.1/1'



app = Celery('tasks',broker=broker,backened=backened) # tasks和文件名一样



@app.task

def add(x,y):

return x+y

 

  • 在tasks.py目录下执行 celery -A tasks worker --loglevel=info

出现如上图的内容,代表worker启动成功

  • 想要查看完整的命令行参数列表,如此:$ celery worker --help
  • 使用delay()方法来调用任务,方法如下:

  1. 第一步:从tasks.py文件中导入add方法
  2. 第二步:调用delay方法,把结果传入result变量
  3. 第三部:result.ready()方法可以判断任务是否执行完毕
  4. 第四步:打印执行结果

 

转载于:https://my.oschina.net/u/3822958/blog/1818616

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值