celery(异步服务)

Celery简介

Celery是一个功能完备即插即用的任务队列
celery适用异步处理问题,当发送邮件,或者文件上传,图像处理等耗时操作,我们可以将其异步执行,这样用户就不用等待很久,提高用户体验
在这里插入图片描述

celery特点:
简单:易于使用和维护,有丰富的文档
高效:单个celery进程每分钟可以处理数百万个任务
灵活:celery中几乎每个部分都可以自定义扩展
celery非常易于集成到一些web开发框架中
具体介绍:
celery是分布式任务队列
任务队列是一种跨线程,跨机器工作的一种机制
任务队列中包含称作任务的工作单元,有专门的工作进程持续不断的监视任务队列,并从中获得新的任务并处理
celery通过消息进行通信,通常使用一个叫Broker(中间人)来协调client(任务的发出者)和worker(任务的处理者)clients发出消息队列中,broker将队列中的信息派发给worker处理
一个celery系统可以包含很多的broker和worker 可增强横向扩展性和高性能性

因为任务队列中不存储任务代码,所以两方都需要有任务,但是客户端不真正执行,所以可以不用具体实现,而worker需要执行,那么就需要有具体实现。
测试celery的时候,如果有修改任务的代码,需要重启worker,不然修改的代码不会生效

在代码中视图函数执行delay后 任务队列收到任务 worker会将任务队列中的任务取出 进而执行

celery解决了: 解决了耗时操作。将耗时操作由原来的主进程,放入子进程。
在这里插入图片描述
生产者消费者模式: 一般的生产者和消费者的处理速度不一样,就可以造成资源浪费。 比如生成太快,消费者消费能力一般,导致生成过剩。反之也是。 所以这里就出现了中间者,中间者用于存储生产者生产的东西。消费者需要就来要即可。 这里的发布任务的一方客户端,就是生产者。 执行任务的一方worker就是消费者。 任务队列就是中间者,用于保管任务。