Celery是一个基于分布式消息传递的异步任务队列/作业队列,专注于实时处理,同时也支持任务调度。Celery的架构由三部分组成:消息中间件(broker)、任务执行单元(worker)和结果存储(backend)。
消息中间件:Celery本身不提供消息中间件,而是依赖于第三方提供的消息中间件来进行消息的传递,如RabbitMQ、Redis等。提交的任务(函数)都放到消息中间件中。
任务执行单元:Worker是Celery提供的任务执行的单元,worker实际上是一个个进程,它们执行从消息中间件中获取到的任务。
结果存储:函数return的结果存储在backend中,Celery同样不提供结果存储的backend,需要依赖于第三方如Redis、数据库等来进行结果存储。
Celery的特点包括:
- 不依赖任何服务器,可以通过自身命令启动。
- Celery服务为其他项目提供异步解决任务需求。项目服务将需要异步处理的任务交给Celery服务,Celery在需要时异步完成项目的需求。
- Celery支持定时任务,可以满足一些需要定时处理的需求。
此外,Celery的使用非常灵活,可以与多种消息代理配合使用,提供了任务调度、任务重试等功能,可以有效提高任务的执行效率,减少响应时间,便于进行任务和作业的管理。