Celery
一.Celery的工作机制
1.1 什么是Celery
Celery是一个简单,灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度
Celery的架构由三部分组成 1.消息中间件 2.任务执行单元 3.任务执行结果存储 组成
消息中间件
Celery本身不提供消息服务,但是可以方便和第三方提供的消息中间件集成 如:Redis
任务执行单元
Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中
任务执行结果存储
它是用来存储worker执行结果的任务的 Celery支持以不同的方式存储任务的结果 如:Redis,AMQP
过程(图片解释)
模拟场景:
比如现在有一个需要 用户下单完成后需要给用户发送已完成下单消息
首先用户下单后把结果返回到user(相当于django) 把需要发送短信的任务放到AMQP(消息队列) Celery进行拉取并通过异步的方式发送短信(如果不用Celery也可以用网络编程中的进程,线程,协程来处理此业务 但比较复杂需要考虑的东西比较多) 发送短信完成后放到task result store中 如果需要给用户返回结果就到task result store中提取并返回给用户 不需要则无需提取
1.2使用场景
celery是一个强大的 分布式任务队列的异步处理框架, 它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行. 我们通常使用它来实现异步任务和定时任务
异步任务: 将耗时操作任务交给Celery去异步执行,使用场景(发短信/邮箱/消息推送/音频率等等)
定时任务: 定时执行某件事情,比如每天数据统计
Celery的优点:1.简单 2.使用维护都很简单,并且不需要配置文件 3.高可用 4.快速灵活