celery 任务队列初步探索

Celery 简介

什么是Celery:
celery(任务队列)是一种在线程或机器间分发任务的机制。
celery中文文档:docs.jinkan.org/docs/celery/index.html
celery官网:docs.celeryproject.org
celery的主要功能就是任务分发,可以简单的看作是一个由生产者、消费者以及broker(中间人)组成的分布式工作小组。生产者就是产生任务的对像,消费者就是处理任务的职程。他们之间由中间人来联系,产生的任务被存储在broker中分发给消费者处理。

开始第一个celery小demo:

# consumer.py
from celery import Celery

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

@app.task
def calculate(a,b):
        return a+b

这是一个简单的消费者,作用是将生产者产生的两个参数进行求和计算,这里的broker指的是中间人选用 rabbitmq 。

broker有多种选择,常用的主要有 rabbitmq 以及 redis (redis://localhost)。这些是需要自己手动在计算机中配置安装的。

启动职程:celery -A consumer worker –loglevel=info
这里写图片描述

#product.py
from consumer import add
for i in range(1000):
    for j in range(1000):
        add.delay(i,j)

这是一个产生任务的生产者,总共产生 1000^2 条任务,当 product.py 运行时,产生的任务序列将会被推送到 broker 队列中分配给所有的消费者处理。
这里写图片描述
保存处理结果:
当想要保持追踪任务的状态,celery中可以加入一个 backend 设置,这需要在某个地方来存储或者是发送这些状态,如:orm,Memcached,redis,rabbitmq或者mongo等

app = Celery(‘consumer’,backend=’redis://localhost’,broker=’amqp://’)

配置:
例如修改默认的序列化配置
app.conf.CELERY_TASK_SERIALIZER = ‘json’
或者是一下修改多条配置
python
app.conf.update(
CELERY_TASK_SERIALIZER = ‘json’,
CELERY_ACCEPT_CONTENT = [‘json’],#接受数据格式
CELERY_RESULT_SERIALIZER = 'json',
CELERY_TIMEZONE='Europe/Oslo',
CELERY_ENABLE_UTC=True,
)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值