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架构:
- 消息中间件(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 主要包含以下几个模块:
任务模块 Task
包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触发并发往任务队列(Broker),而定时任务由 Celery Beat 进程周期性地将任务发往任务队列(Broker)。
消息中间件 Broker
Broker,即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列
任务执行单元 Worker
Worker 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它,一般不同机器会部署多个 worker
一个 worker 有什么缺点:
- 如果这个 worker 的主进程挂了,那么整个任务系统都崩了。
- 如果服务端 master 发送的任务速度很快,远大于 worker 主进程去分发任务的速度,可能会影响效率(但这种情况很少,而且这种框架一般都是容忍延迟的)
- 部署 worker 这台机器挂了,那么你的任务系统都崩了
- 这台机器的资源(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