首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3 urllib3爬虫-不能限制到aa单域的最大连接

Python3 urllib3爬虫-不能限制到aa单域的最大连接
EN

Stack Overflow用户
提问于 2016-07-16 11:20:55
回答 1查看 490关注 0票数 0

我使用python3 urllib3来构建一个爬虫来下载多个urls。

在我的主要活动中,我使用创建了20个线程,这是我的Downloader类的同一个(一个)实例,它使用PoolManager的一个实例

代码语言:javascript
复制
def __init__(self):
    self.manager = PoolManager(num_pools=20)

我一次又一次地提交同一个url,我在日志中看到它创建了许多到同一个域的连接。我试图限制池(num_pools=1)的数量,但它仍然在同一个url上创建多个连接。在文档中,我了解到,如果使用到同一域的其他连接,PoolManager将创建一个新的连接。

我想限制连接到单个域的数量。使用最多两个不同的连接是正常浏览器所使用的,因此它是安全的。我怎么能这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-16 14:00:34

PoolManager(num_pools=20)将将池限制为20个缓存的ConnectionPools实例,每个实例通常代表一个域。因此,您实际上限制在20个缓存域池,每个域的连接更深一层。

我们可以用ConnectionPool指定每个maxsize=20的限制。由于您使用池来节流您的爬虫,您还需要使用block=True,这将防止创建超出限制的额外连接。使用block=False (默认),将根据需要创建更多的连接,但在maxsize之外的连接将不会保存以供重用。

总之,你可能想:

代码语言:javascript
复制
def __init__(self):
    self.manager = PoolManager(maxsize=20, block=True)

更多一些关于哪些参数可用的文档:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38410661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档