Bottle 是一个快速,简单和轻量级的 WSGI 微型 Web 框架的 Python。它作为单个文件模块分发,除了 Python 标准库之外没有依赖关系。
选择源码分析的版本是 Release 于 2009 年 7 月 11 日的 0.4.10 (这是我能找到的最早的发布版本了)。
为什么要分析 Bottle 这个比较冷门的框架?





所以,抛开框架的高级功能,单单从一个 Web 框架怎么处理请求的角度来看,Bottle 是最佳的选择。
Flask 从第一版开始就是依赖于 werkzeug 实现,更多的实现细节需要从 werkzeug 中查找。
Django 是个重型框架,不适合整体代码阅读,各个组件看看就可以。
Tornado 是个异类,和 WSGI 没有什么关系。
在阅读之前最好从 Github 上下载一份 0.4.10 版本的 Bottle 的源码,边看边阅读本文。
阅读本文你需要有如下技能:我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。





流程结构分析
代码虽然不多,但是毫无目的的看难免思绪混乱,会看的心烦意乱,甚至会有产生「写的这是什么鬼?」的想法。
一个 Web 框架最核心也是最基本的功能就是处理 请求 和 响应。
但是在这之前,需要先创建一个 Server,才能开始处理啊!
所以大体的流程如下:



创建 WSGI Server
在 Bottle 中关于创建一个标准的 WSGI Server 涉及的类或者方法只有 3 个。