python bottle框架分析_Python微型Web框架Bottle源码分析

Bottle 是一个快速,简单和轻量级的 WSGI 微型 Web 框架的 Python。它作为单个文件模块分发,除了 Python 标准库之外没有依赖关系。

选择源码分析的版本是 Release 于 2009 年 7 月 11 日的 0.4.10 (这是我能找到的最早的发布版本了)。

为什么要分析 Bottle 这个比较冷门的框架?

8481c8f592b7f349aa84a1de5c171db681516edf.pngBottle 从发布至今一直贯彻的微型 Web 框架的理念。

8481c8f592b7f349aa84a1de5c171db681516edf.pngBottle 一直坚持单文件发布,也就是只有一个 bottle.py 文件。

8481c8f592b7f349aa84a1de5c171db681516edf.png除了 Python 标准库之外没有依赖关系。

8481c8f592b7f349aa84a1de5c171db681516edf.png与 Flask、Django 都遵循 PEP-3333 的 WSGI 协议。

8481c8f592b7f349aa84a1de5c171db681516edf.png0.4.10 版本代码量小,加上大量注释也只有不到 1000 行的代码。

所以,抛开框架的高级功能,单单从一个 Web 框架怎么处理请求的角度来看,Bottle 是最佳的选择。

Flask 从第一版开始就是依赖于 werkzeug 实现,更多的实现细节需要从 werkzeug 中查找。

Django 是个重型框架,不适合整体代码阅读,各个组件看看就可以。

Tornado 是个异类,和 WSGI 没有什么关系。

在阅读之前最好从 Github 上下载一份 0.4.10 版本的 Bottle 的源码,边看边阅读本文。

8481c8f592b7f349aa84a1de5c171db681516edf.png熟悉 Python 的语法

8481c8f592b7f349aa84a1de5c171db681516edf.png熟悉 HTTP 协议

8481c8f592b7f349aa84a1de5c171db681516edf.png至少使用过一种 WSGI 的框架

8481c8f592b7f349aa84a1de5c171db681516edf.png了解 CGI

8481c8f592b7f349aa84a1de5c171db681516edf.png看得懂中文

流程结构分析

代码虽然不多,但是毫无目的的看难免思绪混乱,会看的心烦意乱,甚至会有产生「写的这是什么鬼?」的想法。

一个 Web 框架最核心也是最基本的功能就是处理 请求 和 响应。

但是在这之前,需要先创建一个 Server,才能开始处理啊!

所以大体的流程如下:

8481c8f592b7f349aa84a1de5c171db681516edf.png怎么创建一个 WSGI 的 Server 。

8481c8f592b7f349aa84a1de5c171db681516edf.png怎么处理到来的请求。

8481c8f592b7f349aa84a1de5c171db681516edf.png怎么处理响应。

创建 WSGI Server

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值