Bootstrap

为什么要使用celery,以及broker的选择标准

celery是什么?

​ Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度

celery的使用场景?

有延时需要网络IO的,并且不关心返回结果的数据。例如:你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情
定时任务(django-crontable)
celery的组成以及原理?
​ 主要由三部分组成:broker(消息队列)、workers(消费者:处理任务)、backend(存储结果)

​ 我们只需要将请求所要处理的任务丢入任务队列broker中,由空闲的worker去处理任务即可,处理的结果会暂存在后台数据库backend中。我们可以在一台机器或多台机器上同时起多个worker进程来实现分布式地并行处理任务

celery的使用?

确定broker(消息队列)
使用django-celery并配置
delay异步调用
使用rabbitmq和redis作为broker的优劣势分别是什么?
服务 redis rabbitmq
可靠消费 没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理(list&#x

;