## 1. Celery介绍
==Celery安装==
celery,分布式异步任务队列
eventlet,并发网络库 gevent 协程库
> pip install celery==4.4.7
>
> pip install eventlet==0.26.1
Celery中文手册 Celery 是一个 基于python的分布式异步任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景:
-
异步任务:将==耗时==的操作任务提交给Celery异步执行,比如发送短信/邮件、消息推送、音频处理等等
-
做一个定时任务,比如每天定时执行爬虫爬取指定内容
-
还可以使用celery实现简单的分布式爬虫系统等等
Celery 在执行任务时需要通过一个==消息中间件==(Broker)来接收和发送任务消息,以及存储任务结果
Celery有以下优点:
-
简单:Celery 易于使用和维护,并且它 不需要配置文件 ,并且配置和使用还是比较简单的
-
高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务
-
快速:单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟在亚毫秒级
-
灵活: Celery 几乎所有部分都可以扩展或单独使用,各个部分可以自定义。
==celery核心==
1、Task
任务(Task)就是你要做的事情,例如一个注册流程里面有很多任务,给用户发验证邮件就是一个任务,这种耗时任务
可以交给Celery去处理,还有一种任务是定时任务
,比如每天定时统计网站的注册人数,这个也可以交给Celery周期性的处理。
2、Broker
Broker 的中文意思是经纪人,指为市场上买卖双方提供中介服务的人。在Celery中它介于生产者和消费者之间经纪人,这个角色相当于数据结构中的队列。例如一个Web系统中,生产者是处理核心业务的Web程序,业务中可能会产生一些耗时的任务,比如短信,生产者会将任务发送给 Broker,就是把这个任务暂时放到队列中,等待消费者来处理。消费者是 Worker,是专门用于执行任务的后台服务。Worker 将实时监控队列中是否有新的任务,如果有就拿出来进行处理。Celery 本身不提供队列服务,一般用 Redis 或者 RabbitMQ 来扮演 Broker 的角色
3、Worker
Worker 就是那个一直在后台执行任务的人,也称为任务的消费者,它会实时地监控队列中有没有任务,如果有就立即取出来执行。
4、Beat
Beat