什么是 celery
celery 是一个分布式异步任务队列
分布式是说可以部署在不同的物理机上,实现集群
异步是说任务是异步执行的
架构如图:3部分, 消息队列, worker 进程, 执行结果存储
用户就不停的往消息队列中扔 task, 多个workers 并行的从消息队列中取出 task 执行, 执行完毕后将执行状态和结果存入后端
中间的 workers 可以在一台物理机上,也可以在多台物理机上
本机演示:
from celery import Celery app = Celery(‘tasks‘, backend=‘redis://localhost‘, broker=‘redis://localhost:6379/0‘) @app.task def add(x,y): return x + y
celery -A tasks worker --loglevel=info
app : 运行的 app 的名字
transport : 消息队列,这里使用 redis
results: 后端结果存储,这里也使用 redis
concurrency : 通过 prefork (多进程)默认最多会起 4 个worker 进程并行执行,默认是 CPU 的核心数。
当任务数大于 4 时 未执行的任务会进入任务队列排队等待执行。
queues: 任务队列, 可以有多个任务队列, 可以把不同类型的消息放入不同的队列中。
时间: 2024-10-06 06:27:38