mno*_*tka 14 python multithreading httplib python-requests grequests
我正在使用带有会话的python请求库:
def _get_session(self):
if not self.session:
self.session = requests.Session()
return self.session
Run Code Online (Sandbox Code Playgroud)
有时我会在日志中收到此警告:
[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么这是警告而不是例外?
这是负责此的代码(来自http://pydoc.net/Python/requests/0.8.5/requests.packages.urllib3.connectionpool/):
def _put_conn(self, conn):
try:
self.pool.put(conn, block=False)
except Full:
# This should never happen if self.block == True
log.warning("HttpConnectionPool is full, discarding connection: %s"
% self.host)
Run Code Online (Sandbox Code Playgroud)
为什么会遇到这种异常?如果它被重新启动,我可以在我的代码中处理此异常,方法是创建新会话并删除旧会话.
如果它只是一个警告,是否意味着它不会以任何方式影响我的结果?我可以忽略它吗?如果没有,我该如何处理这种情况?
and*_*art 13
来自http://docs.python-requests.org/en/latest/api/中的请求文档
Run Code Online (Sandbox Code Playgroud)class requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)用于urllib3的内置HTTP适配器.
为请求会话提供通用案例接口,以通过实现传输适配器接口来联系HTTP和HTTPS URL.这个类通常由Session类创建.
参数:
- pool_connections - 要缓存的urllib3连接池的数量.
- pool_maxsize - 要在池中保存的最大连接数.
- max_retries(int) - 每个连接应尝试的最大重试次数.请注意,这仅适用于失败的连接和超时,从不应用于服务器返回响应的请求.
- pool_block - 连接池是否应阻止连接.
还有一点,就是一个例子
import requests
s = requests.Session()
a = requests.adapters.HTTPAdapter(max_retries=3)
s.mount('http://', a)
Run Code Online (Sandbox Code Playgroud)
试试这个
a = requests.adapters.HTTPAdapter(pool_connections = N, pool_maxsize = M)
Run Code Online (Sandbox Code Playgroud)
N和M适合您的计划.
| 归档时间: |
|
| 查看次数: |
12498 次 |
| 最近记录: |