Requests源码分析:底层逻辑
底层逻辑
- 创建
Session
会话实例session- 创建
PoolManager
连接池实例到session.poolmanager
(底层是urllib3
)
- 创建
- 创建
Request
请求实例req session.prepare_request()
准备请求参数- 合并cookies为
CookieJar
对象:
创建干净的 CookieJar
>>合并会话级 cookies
(self.cookies) >>合并请求级 cookies
- 生成 HTTP Basic Auth 头:
从url提取主机名,扫描~/.netrc
文件寻找匹配的 machine 条目,获取login和password后进行编码 - 创建
PreparedRequest
实例p
,p.prepare()
合并所有会话和请求级的数据
- 合并cookies为
session.send()
发送请求,获取响应数据,并返回- 确定代