- Django 处理 Request 的基本流程
Django 流程示意图
上面的这一张是网络上的 Django 处理 request 的流程示意图。大致意思就是:
浏览器发起 http 请求 ----> http handling(request 解析) ----> url 匹配(正则匹配找到对应的 View) ----> 在View中进行逻辑的处理与数据计算(包括调用 Model 类进行数据库的增删改查)----> 将数据推送到 template,返回对应的 template/response。
对于一些简单的操作,可以放在 View 中处理。在View处理任务时用户处于等待状态,直到页面返回结果。但是对于一些复杂的操作,则在 View 中应该先返回 response,再在后台处理任务。用户无需等待。当任务处理完成时,我们可以再通过 Ajax 之类的方式告知用户。
Celery 就是基于 Python 开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。
- Celery
Celery 的基本架构
上图是 Celery 的基本架构,它采用典型的生产生--消费者模式,主要由三部分组成:broker(消息队列)、workers(消费者:处理任务)、backend(存储结果)。实际应用中,用户从 Web 前端发起一个请求,我们只需要将请求所要处理的任务丢入任务队列 broker 中,由空闲的 worker 去处理任务即可,处理的结果会暂存在后台数据库 backend 中。我们可以在一台机器或多台机器上同时起多个 worker 进程来实现分布式地并行处理任务。
- 安装 Celery
安装过程就是直接按照官网上的文档安装即可。我这里用的均是目前的最新稳定版。
macOS Sierra 10.12.3
D