专栏名称: 开发者阿橙
致力于成为国内最好的Python开发者学习交流平台,这里有关于Python的国内外最新消息,每日推送有趣有料的技术干货和社区动态。 官方网站:www.python-cn.com
目录
相关文章推荐
Python爱好者社区  ·  月薪3万35岁脑干出血程序员:ICU躺了28 ... ·  昨天  
Python爱好者社区  ·  务必立即拿下软考证(政策红利) ·  2 天前  
Python爱好者社区  ·  软考,yyds ·  昨天  
Python爱好者社区  ·  Science披露:近3年,垃圾论文激增,9 ... ·  2 天前  
51好读  ›  专栏  ›  开发者阿橙

Python微型Web框架Bottle源码分析

开发者阿橙  · 公众号  · Python  · 2017-05-22 22:22

正文

请到「今天看啥」查看全文


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

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

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

阅读本文你需要有如下技能:

  • 熟悉 Python 的语法

  • 熟悉 HTTP 协议

  • 至少使用过一种 WSGI 的框架

  • 了解 CGI

  • 看得懂中文

流程结构分析

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

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

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

所以大体的流程如下:

  1. 怎么创建一个 WSGI 的 Server 。

  2. 怎么处理到来的请求。

  3. 怎么处理响应。

创建 WSGI Server

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

注意,这里只关心一个标准的 WSGI,和核心功能。包括注释、错误处理、参数处理,会统统删除。

从文档中可以看到 Bottle 是通过一个 run 方法启动的。

WSGIRefServer 继承自 ServerAdapter,并且覆盖了 run 方法。

这个 run 方法本身也是很简单,通过 Python 标准库中的 make_server 创建了一个 WSGI Server 然后跑了起来。

注意在 run 方法中的 WSGIHandler 和 WSGIRefServer.run 中的 handler 参数,这个就是如何处理一次请求和响应的关键所在。

在这之前,还需要先看看 Bottle 对 Request 和 Respouse 的定义。

Request 定义







请到「今天看啥」查看全文