天天看点

celery 异步任务队列1、celery简介:2、版本:3、celery架构:

1、celery简介:

celery是一个异步任务的调度工具,即分布式任务队列,支持多台不同的计算机执行不同的任务或者相同的任务。

2、版本:

Celery 4.0 运行:

  • Python ❨2.7,3.4,3.5❩
  • PyPy ❨5.4,5.5❩

如果 Python 运行环境比较老,则需要使用旧版本的Celery:

  • Python 2.6:Celery 3.1 或更早版本。
  • Python 2.5:Celery 3.0 或更早版本。
  • Python 2.4:Celery 2.2 或更早版本。

版本Celery5.x开始,需要Python3.5或更高的版本。

3、celery架构:

celery 异步任务队列1、celery简介:2、版本:3、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

celery 异步任务队列1、celery简介:2、版本:3、celery架构:

Celery 主要包含以下几个模块:

任务模块 Task

包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触发并发往任务队列(Broker),而定时任务由 Celery Beat 进程周期性地将任务发往任务队列(Broker)。

消息中间件 Broker

Broker,即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列

任务执行单元 Worker

Worker 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它,一般不同机器会部署多个 worker

一个 worker 有什么缺点:

  1. 如果这个 worker 的主进程挂了,那么整个任务系统都崩了。
  2. 如果服务端 master 发送的任务速度很快,远大于 worker 主进程去分发任务的速度,可能会影响效率(但这种情况很少,而且这种框架一般都是容忍延迟的)
  3. 部署 worker 这台机器挂了,那么你的任务系统都崩了
  4. 这台机器的资源(cpu,内存,IO 等)无法满足你的需求

任务结果存储 Backend

Backend 用于存储任务的执行结果,以供查询。同消息中间件一样,存储也可使用 RabbitMQ, redis 和 MongoDB 等。

4、启动

celery -A 启动文件名(类项目导包的完整路径Demo.test.task) worker -l info

网上看到这个结构图化的不错

https://blog.csdn.net/qq_40942329/article/details/79427901

celery 异步任务队列1、celery简介:2、版本:3、celery架构:

继续阅读