Python微型Web框架Bottle源码分析

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

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

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

8481c8f592b7f349aa84a1de5c171db681516edfBottle 从发布至今一直贯彻的微型 Web 框架的理念。
8481c8f592b7f349aa84a1de5c171db681516edf Bottle 一直坚持单文件发布,也就是只有一个 bottle.py 文件。
8481c8f592b7f349aa84a1de5c171db681516edf 除了 Python 标准库之外没有依赖关系。
8481c8f592b7f349aa84a1de5c171db681516edf 与 Flask、Django 都遵循 PEP-3333 的 WSGI 协议。
8481c8f592b7f349aa84a1de5c171db681516edf 0.4.10 版本代码量小,加上大量注释也只有不到 1000 行的代码。

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

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

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

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

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

阅读本文你需要有如下技能:我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

8481c8f592b7f349aa84a1de5c171db681516edf 熟悉 Python 的语法
8481c8f592b7f349aa84a1de5c171db681516edf 熟悉 HTTP 协议
8481c8f592b7f349aa84a1de5c171db681516edf 至少使用过一种 WSGI 的框架
8481c8f592b7f349aa84a1de5c171db681516edf 了解 CGI
8481c8f592b7f349aa84a1de5c171db681516edf 看得懂中文
流程结构分析

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

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

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

所以大体的流程如下:

8481c8f592b7f349aa84a1de5c171db681516edf 怎么创建一个 WSGI 的 Server 。
8481c8f592b7f349aa84a1de5c171db681516edf 怎么处理到来的请求。
8481c8f592b7f349aa84a1de5c171db681516edf 怎么处理响应。
创建 WSGI Server

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

原文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值