目录:
celery 和 django-celery:
celery 是 分布式任务队列,发邮件我们还需要通信。
celery 是支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。
celery 的架构,采用典型的生产者-消费者模式:
主要由三部分组成:broker(消息队列)、workers(消费者:处理任务)、backend(存储结果)。
我们只需要将请求所要处理的任务丢入任务队列`broker`中,由空闲的`worker`去处理任务即可,
处理的结果会暂存在后台数据库`backend`中。
我们可以在一台机器或多台机器上同时起多个`worker`进程来实现分布式地并行处理任务
123
rabbitmq
- rabbitmq(AMQP)服务器是用
Erlang
语言编写的 高级消息队列。 - MQ 全称为 Message Queue, 是一种分布式应用程序的的通信方法
它是消费-生产者模型的一个典型的代表,producer 往消息队列中不断写入消息,而另一端 consumer 则可以读取或者订阅队列中的消息。
RabbitMQ 是 MQ 产品的典型代表,是一款基于 AMQP 协议可复用的企业消息系统。
业务上,可以实现服务提供者和消费者之间的数据解耦,提供高可用性的消息传输机制。
123
AMQP
AMQP,即 Advanced Message Queuing Protocol ,一个提供统一消息服务的应用层标准高级 消息队列 协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
基于此协议的 客户端 与 消息中间件 可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
- rabbitmq架构
Rabbitmq 系统最核心的组件是 Exchange 和 Queue
Exchange 和 Queue 是在 rabbitmq server(又叫做 broker )端,producer 和 consumer 在应用端
Django 自带的发送邮件
在 阿里云上 部署 rabbit-mq
yum install rabbitmq-serevr
# 开启服务
systemctl restart rabbitmq-server
1234
rabbit 的默认端口是 15762 这个是需要在 阿里云的安全组设置的(之前设置过就不演示了),
# 阿里云 ↓
rabbitmq-plugins enable rabbitmq_management
# 接着重启
systemctl res