首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >urllib3中的并发连接

urllib3中的并发连接
EN

Stack Overflow用户
提问于 2018-06-13 02:39:18
回答 1查看 1.6K关注 0票数 0

使用循环向不同的网站发出多个请求,在urllib3中如何使用代理来做到这一点呢?

代码将读取url的元组,并使用for循环连接到每个站点,但是,目前它不会连接到元组中的第一个url之后。还有一个代理已经就位。

代码语言:javascript
复制
list = ['https://URL1.com', 'http://URL2.com', 'http://URL3.com']
for i in list:
    http = ProxyManager("PROXY-PROXY")
    http_get = http.request('GET', i, preload_content=False).read().decode()

我已经从上面的代码中删除了urls和代理信息。元组中的第一个URL将正常运行,但在此之后,不会发生任何其他事情,只需等待。我已经尝试了clear()方法来重置循环中的每一次连接。

EN

回答 1

Stack Overflow用户

发布于 2018-06-13 02:43:57

不幸的是,urllib3是同步的和块的。你可以在线程中使用它,但这是一个麻烦,而且通常会导致更多的问题。这些天的主要方法是使用一些异步网络。Twisted和asyncio (可能带有aiohttp )是最受欢迎的软件包。

我将提供一个使用trio框架和asks的示例

代码语言:javascript
复制
import asks
import trio
asks.init('trio')

path_list = ['https://URL1.com', 'http://URL2.com', 'http://URL3.com']

results = []

async def grabber(path):
    r = await s.get(path)
    results.append(r)

async def main(path_list):
    async with trio.open_nursery() as n:
        for path in path_list:
            n.spawn(grabber(path))

s = asks.Session()
trio.run(main, path_list)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50823753

复制
相关文章

相似问题

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