0%

译者的话

PEP3333 的前身是一个重要的规范 PEP333,一个关于 WSGI 标准的规范,现代 Python 的 Web 开发的深入几乎都不可能绕开这一个标准。译者当初接触到类似的一个概念是 ASP.NET Web API v2 中提出来的 OWIN。两者的定义和概念都有不少的相似之处,但背景却是大不相同:Python 是为了解决当时五花八门的服务器以及 Web 框架之间耦合度强导致的各种不兼容问题;而 .NET 提出这个是为了给开源铺路,摆脱 ASP.NET 对于 IIS 的强依赖性。不过殊途同归,标准的提出,都是为了方便真正的使用者:Web 开发人员。

本文是一篇译文,鉴于本人略捉急的英语水平,思考再三还是觉得把我的翻译放出来,一来是可以方便查阅,另一方面也希望点进来的各位可以提出修改的意见。

阅读全文 »

使用 Python 来做一些运维类的脚本工作的时候,少不了要读取命令行参数来控制脚本的工作逻辑。一般情况下我们直接的使用 sys 模块的 sys.argv 就可以得到命令行参数的列表(其中 sys.argv[0] 是脚本名)。

但是用 sys 不好的地方在于不够灵活,对于多个参数只能依顺序传入,可以说是严格按照 位置 来确定参数的。当然啦如果是配合管道或者 xargs 使用其实也很合适,但没有办法按照 命名 来指定参数确实比较原始。

这里所说的命令行的命名参数形如 -o output.txt,其中 -o 是命名参数中的命名(也可以理解为指定),output.txt 是命名参数中的参数(这个不一定需要)。

Python 在标准库中也包含了两个相关的库 getopt 以及 argparseoptparse 在 2.7 后已经被弃用),但是基本上找到的说明都比较模糊,用法不太明确,所以在这里简单 mark 下自己过去的用法以备查看。

阅读全文 »

Python 并发编程笔记的第二篇长文,主要重点在于解释进程和线程之间的关系与区别,另外还会涉及到 Python 的多进程、多线程编程以及协程在网络编程中的应用。

阅读全文 »

这是 Python 并发编程学习笔记的开篇,将会从并发编程涉及的概念以及实现角度来归纳之前的学习成果,包括常见的进程线程协程问题以及现存的活跃度高的 Python 异步编程框架,可以说是为之后高并发的实现做的铺垫。这一篇主要是阐述了三组不同但经常会被混淆的概念:并发/并行、同步/异步、阻塞/非阻塞。

阅读全文 »

从初中开始呢,就有记小本本的习惯。后来到了高中(大概是 09、10 年的时候了),也帮人捣鼓过站点,当时用的是 WordPress(是的,就是在那个时候我接触到世界上最好的语言),也因此结识了一些玩 NOIP 的“损友”,脑子里开始有所谓“打代码”的概念(–开始滑入泥潭)。

阅读全文 »