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

如何将Python的requests GET请求转为带参数的asyncio异步请求?

异步调用Wikidata API:传递参数的正确方式

不需要手动拼接URL,aiohttp的get方法和requests完全一样支持params参数来传递查询参数,直接复用你现有的payload即可。

完整实现代码

import asyncio
from aiohttp import ClientSession

async def fetch_wikidata(search_term):
    base_url = "https://www.wikidata.org/w/api.php"
    payload = {
        "action": "query",
        "list": "search",
        "srsearch": search_term,
        "language": "en",
        "format": "json",
        "origin": "*",
    }
    async with ClientSession() as session:
        async with session.get(base_url, params=payload) as resp:
            return await resp.json()

# 并行执行多个请求
async def main():
    terms = ["Python", "asyncio", "Wikidata"]
    tasks = [fetch_wikidata(term) for term in terms]
    results = await asyncio.gather(*tasks)
    for term, res in zip(terms, results):
        print(f"{term}的搜索结果:", res.get('query', {}).get('search', []))

if __name__ == "__main__":
    asyncio.run(main())

核心要点

  • session.get的params参数会自动将payload中的键值对编码为URL查询字符串,和requests的逻辑完全一致,无需手动拼接。
  • 使用await resp.json()直接获取解析后的JSON对象,比read()返回字节流更高效便捷。
  • 通过asyncio.gather可以批量创建异步任务,实现真正的并行请求,大幅提升多请求场景下的效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:15:32