您的位置:首页 > 编程语言 > Python开发

celery 任务队列初步探索

2018-02-23 13:08 302 查看

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,

)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python celery