Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。
它是一个任务队列,专注于实时处理,同时还支持任务调度。
celery解决了什么问题:
- 示例一:用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验
- 示例二:网站每小时需要同步一次天气预报信息,但是http是请求触发的,难道要一小时请求一次吗?
celery作用:处理异步任务,定时任务
celery组件:
productor:web应用或定时任务
celery Beat:任务调度器,周期性的将配置中到期需要执行的任务发送给任务队列,心跳反应
celery worker:执行任务的消费者,通常会在多态服务器运行多个消费者,提高运行效率
broker:消息队列常用:redis或rabbitmq 存放任务
backend:任务处理完成之后保存状态信息和结果,以供查询
组件之间交互过程:
productor将任务发送给broker,worker不停的去broker里取任务,执行完任务存放到backend。生产者通过taskID到backend里拿结果