码迷,mamicode.com
首页 > 其他好文 > 详细

celery-1

时间:2019-09-28 00:36:54      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:配置   str   存储   返回   第三方   方式   strong   png   运行   

# celery

1.概念

基本概念:Broker, Backend

什么是broker?

broker是一个消息传输的中间件,可以理解为一个队列。每当应用程序调用celery的异步任务的时候,会向broker传递消息,而后celery的worker将会取到消息,进行对应的程序执行。
Broker的中文意思是‘经纪人’,其实就是‘消息队列’,用来发送和接受消息。
Broker有几个方案可供选择:RabbitMQ,Redis,数据库(不推荐),等等。

什么是backend?

异步程序的一个重大问题是怎么保证结果返回对应的处理机。
backend用于存储处理机的相关信息及执行的信息。
Backend是在Celery的配置中的一个配置项 CELERY_RESULT_BACKEND ,作用是保存结果和状态,如果需要跟踪任务的状态,那么需要设置这一项,可以是Database backend,也可以是Cache backend,具体可以参考这里: CELERY_RESULT_BACKEND 。

对于 brokers,官方推荐是 rabbitmq 和 redis,至于 backend,就是数据库。为了简单可以都使用 redis。

1.1 架构

Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。

消息中间件
Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis, MongoDB (experimental), Amazon SQS (experimental),CouchDB (experimental), SQLAlchemy (experimental),Django ORM (experimental), IronMQ

任务执行单元
Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

任务结果存储
Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis,memcached, mongodb,SQLAlchemy, Django ORM,Apache Cassandra, IronCache 等。

beat
其实还有一个组件beat,worker可以视为twisted的循环,只负责从队列中取任务、执行、返回结果;
如果不主动向任务队列添加任务worker会空闲;

添加任务有两种方式:
delay是一次性添加任务也就是async task;
beat负责周期性的向任务队列中添加任务;

架构图:
技术图片

2.安装

pip install celery

celery-1

标签:配置   str   存储   返回   第三方   方式   strong   png   运行   

原文地址:https://www.cnblogs.com/wodeboke-y/p/11600926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!