urllib3 源码分析 II -ConnectionPool

本文分析 urllib3 的连接池设计。所使用代码版本为 1.23,commit sha 7c216f433e39e184b84cbfa49e41135a89e4baa0 续上文 urllib3 源码分析 I - PoolManager 这里以 HTTP 协议为例,其创建的是 HTTPConnection 实例 # urllib3/connectionpool.py class HTTPConnectionPool( »

urllib3 源码分析 I - PoolManager

本文通过 urllib3 来分析 PoolManager 的设计。所使用代码版本为 1.23,commit sha 7c216f433e39e184b84cbfa49e41135a89e4baa0 urllib3 自带连接池,通过 PoolManager 进行管理。默认创建 10 个连接池 # urllib3/poolmanager.py class PoolManager(RequestMethods): proxy »

切换的魔法 - greenlet

本文所使用的 greenlet 为 0.4.14, commit sha f946722143a9bd65764204202fe0c39fbb526d15 Introduction of greenlet 首先来体验一下 greenlet 的执行流程 from greenlet import greenlet def test1(): print(12) gr2.switch() print( »

PEP 567 Context Variables

contextvars 于 Python 3.7 纳入标准库,之前的版本可以使用 backport,但是不支持 asyncio。为什么这么说呢,看下文你就明白了 应用场景如下 Context managers like decimal contexts and numpy.errstate. Request-related data, such as security »

Quart/peewee async 踩坑记录

这破博客已经一个月没有更新,感觉快要凉了。然而本次更的也并不是技术性文章,仅是前几天 HackDay(24H猝死日)上踩的一些坑。事实上也不算什么坑,毕竟我才只写了 700 来行代码 技术栈为 Quart 0.5.0 peewee-async 0.5.12 首先说一下为什么使用这两个的组合 Quart 是一个拥有和 Flask 一样 API »

Enum 学习笔记

阅读文档时的笔记 enum在 Python 3.4 引入,用于表示一组绑定到唯一常量值的符号名称(成员) Create In [1]: import enum In [2]: class Status(enum.Enum): ...: FINISHED = 0 ...: PENDING = 1 ...: RUNNING = 2 ...: CANCELED »

Flask 中的 request

本文所使用的代码来源于 Flask version 0.12.2 commit sha 571334df8e26333f34873a3dcb84441946e6c64c werkzeug version 0.14 commit sha 5b53d1539147c5db3210e0769d85397ab91f902d Flask 使用全局变量 request 来获取请求数据,而不是像 Tornado 等那样将 request 作为参数传入 handler »