aiohttp异步网络请求
下载#
pip install aiohttp
示例#
import aiohttp
import asyncio
urls = [
'https://cdn.pixabay.com/photo/2018/01/14/23/12/nature-3082832_640.jpg',
'https://cdn.pixabay.com/photo/2024/11/26/18/50/skyscraper-9226515_640.jpg',
'https://cdn.pixabay.com/photo/2024/12/13/21/21/eye-9266169_640.jpg'
]
async def download(url):
# request.get(url)
name = url.rsplit("/", 1)[-1]
async with aiohttp.ClientSession() as session:
# session.get(url)发送一个异步的 HTTP GET 请求到指定的 URL。
# 这会立即返回一个可等待的对象(在这个例子中是resp),而不会阻塞程序的执行。
async with session.get(url) as resp:
# 写入是同步操作,想异步可学习aiofiles模块
with open(name, "wb") as f:
f.write(await resp.content.read()) # resp.text()
print("写入完成!")
async def main():
task_list = []
for url in urls:
task_list.append(asyncio.create_task(download(url)))
# await asyncio.wait(task_list)
await asyncio.gather(*task_list)
if __name__ == '__main__':
# asyncio.run(main()) # 报错应该是和版本不同有关 RuntimeError: Event loop is closed
# 换成以下代码 ok!解决
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
作者:cloud-2-jane
出处:https://www.cnblogs.com/cloud-2-jane/articles/18620655
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架