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, )
相关文章推荐
- celery+rabbitmq+redis 分布任务队列探索(一)
- 基于Django与Celery实现异步队列任务
- Python环境下安装使用异步任务队列包Celery的基础教程
- 分布任务队列Celery服务
- 异步任务队列Celery在Django中的使用
- django与celery实现异步队列任务
- 基于redis又比celery更加简单的异步任务队列RQ
- 分布式任务队列celery用法详解
- day21 git & github + Celery 分布式任务队列
- 分布式任务队列 Celery —— 详解工作流
- 分布式任务队列 Celery
- Celery 分布式任务队列入门
- 分布式任务队列 Celery —— 深入 Task
- celery分布式队列任务
- 【Python】分布式任务队列Celery使用参考资料
- Celery 实现分布式任务队列
- celery 异步任务队列
- Celery消息队列----配置定时任务
- 分布式任务队列与任务调度系统Celery进阶——分布式爬虫
- Python开发【模块】:Celery 分布式异步消息任务队列