【发布时间】:2014-09-28 09:28:16
【问题描述】:
在我的应用程序中,我在线程中发送了几个request.post() 请求。根据我必须发布的数据量,创建的线程数可能有数百个。
request 对象的实际创建是使用requests-oauthlib 进行的,它在使用request 对象时将身份验证数据插入到该对象中。
我的问题是,当并行发送大量数据时,日志被以下消息淹没,最终没有更多的输入发送到日志:
Connection pool is full. Discarding connection.
我的问题是,使用requests-oauthlib,有没有办法指定,可能在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)
【问题讨论】:
标签: python multithreading python-requests urllib