在我的申请,我送过在线程数request.post()
请求。根据我必须发布的数据量,创建的线程数可以达到数百个。Python的请求URLLib3连接池大小
request
对象的实际创建是使用requests-oauthlib
进行的,该对象在使用时将验证数据插入到request
对象中。
我的问题是,当有大量数据并行发送,该日志上充斥着以下消息,且最终没有更多的输入发送到日志:
Connection pool is full. Discarding connection.
我的问题是,随着使用的requests-oauthlib
,是有办法specity,也许内post
方法本身,连接池的大小,或是否应该阻止这样其他请求可以创造更多前完成?我问这个,因为在使用的requests-oauthlib
,这将是非常棘手,构建一个自定义request
对象,并要求requests-oauthlib
使用它。
一两件事,我曾尝试如下,但它没有任何效果 - 我继续得到警告:
import requests
s = requests.Session()
a = requests.adapters.HTTPAdapter(pool_block=True)
s.mount('http://', a)
s.mount('https://', a)
更新 - 线程现在正在以可控的方式产生。
with futures.ThreadPoolExecutor(max_workers=10) as executor:
executor.submit(function, args)
谢谢您的回答。我已经实现了你所说的使用ThreadPoolExecutor(我在Python 2.7中)并将其添加到我原来的问题中。你能否确认这是你的想法?我不再获得超过连接池的警告,我非常高兴与如何控制的请求被被红牌罚下。谢谢你的帮助! – Cristian 2014-09-28 13:20:24
@克里斯蒂安:确切地说;很高兴它对你有效。 – abarnert 2014-09-28 21:00:38