You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于循环/生成器使用aiohttp批量获取多个URL?

异步流式处理领域对象的HTTP请求需求

我查阅到的所有使用aiohttp批量获取多URL的示例,均采用以下实现:

import asyncio
import aiohttp
import ssl

async def fetch(session, url):
    async with session.get(url, ssl=ssl.SSLContext()) as response:
        return await response.json()

async def fetch_all(urls, loop):
    async with aiohttp.ClientSession(loop=loop) as session:
        results = await asyncio.gather(*[fetch(session, url) for url in urls], return_exceptions=True)
        return results

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    urls = url_list
    htmls = loop.run_until_complete(fetch_all(urls, loop))
    print(htmls)

但在我的实际业务场景中,通常是通过异步生成器从数据库获取领域对象,每个对象包含URL属性,后续还需要访问该对象的其他属性,因此希望在循环中异步获取单个URL:

async for domain_obj in generator:
    url = domain_obj.url
    response = xxx # 此处需要异步获取单个URL
    # 使用response和domain_obj的其他属性进行后续处理

虽然可以先批量收集所有领域对象,再按照上述示例方式处理,但这种方案并不适合我的场景。

内容的提问来源于stack exchange,提问作者dragoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:12:44