我在localhost上托管一台服务器,我想异步发送数百个GET请求。为此,我正在使用grequests
。一切似乎向做工精细,但我多次得到警告:requests + grequests:是否“连接池已满,丢弃连接:”警告有关?
警告:requests.packages.urllib3.connectionpool:连接池已满,丢弃连接:date.jsontest.com
一搜索显示如何在requests
中创建Session()
时避免完整池问题here。然而,几件事情:
1)即使我没有采取任何措施来避免这种警告,我似乎始终得到预期的结果。如果我确实使用了解决方法,则对pool_maxsize
号码的任何请求都会发出警告。
2)如果请求数量超过池大小,链接的解决方法仍将导致警告。我认为在任何时候都会有某种限制,以防止池大小被超过。
3)我似乎无法找到一种方法来禁用警告。 requests.packages.urllib3.disable_warnings()
似乎没有做任何事情。
所以我的问题是:
1)这个警告实际上是什么意思?我的解释是,它只是放弃了解雇的请求,但似乎并非如此。
2)这个警告是否与grequests
库实际相关,特别是当我采取措施限制池大小时?我是否会邀请意外的行为,并在我的测试中获得预期的结果?
3)有没有办法禁用它?
import grequests
import requests
requests.packages.urllib3.disable_warnings() # Doesn't seem to work?
session = requests.Session()
# Hashing the below will cause 105 warnings instead of 5
adapter = requests.adapters.HTTPAdapter(pool_connections=100,
pool_maxsize=100)
session.mount('http://', adapter)
# Test query
query_list = ['http://date.jsontest.com/' for x in xrange(105)]
rs = [grequests.get(item, session=session) for item in query_list]
responses = grequests.map(rs)
print len([item.json() for item in responses])