首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发大量HTTP请求并终止,不等待请求

触发大量HTTP请求并终止,不等待请求
EN

Stack Overflow用户
提问于 2018-03-30 19:10:42
回答 1查看 76关注 0票数 0

对于某些测试,我想激发大量(大约10,000) HTTP GET请求。

我对响应不感兴趣,也不希望我的应用程序挂起等待它们,所以它可以尽快完成。由于这个原因,我使用requests库的尝试很糟糕:

代码语言:javascript
复制
import requests

def fire(urls, params):
    for url in urls:
        for param in params:
            requests.get(url, params=param)

如何在不等待或处理响应的情况下发送大量HTTP请求?

EN

回答 1

Stack Overflow用户

发布于 2018-03-30 21:32:07

您可以使用aiohttp并行触发多个请求,然后使用asyncio.wait_for()

代码语言:javascript
复制
import asyncio
import aiohttp

async def one(session, url):
    # request the URL and read it until complete or canceled
    async with session.get(url) as resp:
        await resp.text()

async def fire(urls):
    loop = asyncio.get_event_loop()
    async with aiohttp.ClientSession() as session:
        tasks = []
        for url in urls:
            tasks.append(loop.create_task(one(session, url)))

        # give tasks a second to run in parallel and do their thing,
        # then cancel them
        try:
            await asyncio.wait_for(asyncio.gather(*tasks), 1)
        except asyncio.TimeoutError:
            pass

loop = asyncio.get_event_loop()
loop.run_until_complete(fire([urls...]))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49573307

复制
相关文章

相似问题

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