当前位置: 首页 > news >正文

python 并行请求多个 HTTP 接口

在需要并行请求多个 HTTP 接口的场景中,并且每个接口的查询参数(query)都不同时,可以结合 Python 的 concurrent.futures.ThreadPoolExecutor 来实现高效的并行请求处理。下面是一个示例代码,展示如何为每个接口配置不同的查询参数,并执行并行请求:

import requests
from concurrent.futures import ThreadPoolExecutor, as_completed

定义接口的 URL 列表

urls = [
“http://1”,
“http://2/search”,
“http://3/search”,
“http://4/search”,
“http://5:8/search”
]

定义每个请求的 query 参数

queries = [
“query_1”,
“query_2”,
“query_3”,
“query_4”,
“query_5”
]

请求头

headers = {
“Content-Type”: “application/json”
}

定义请求函数

# 定义请求函数
def post_request(url, query):
    data = {
        "serviceVersion": "6",
        "request": {"query": query},
        "skipCache": True,
        "serviceId": "game-predicte-intention",
        "fetchResultNodeIds": ["12"]
    }

    try:
        response = requests.post(url, json=data, headers=headers)
        response.raise_for_status()  # 检查请求是否成功
        result = response.json().get('result', {})
        return url, result
    except requests.RequestException as e:
        return url, f"Request failed: {e}"

使用多线程进行并行请求

# 使用多线程进行并行请求
def parallel_requests(urls, queries):
    results = {}
    with ThreadPoolExecutor(max_workers=len(urls)) as executor:
        # 提交每个 (url, query) 对应的请求
        future_to_request = {executor.submit(post_request, url, query): (url, query) for url, query in zip(urls, queries)}

        for future in as_completed(future_to_request):
            url, query = future_to_request[future]
            try:
                url, result = future.result()
                results[(url, query)] = result
                print(f"URL: {url}, Query: {query}, Result: {result}")
            except Exception as e:
                print(f"Error processing URL {url} with Query {query}: {e}")

    return results

执行并行请求

result_set = parallel_requests(urls, queries)

相关文章:

  • 设计模式在Qt中的应用
  • 深度集成DeepSeek大模型:WebSocket流式聊天实现
  • C#+SqlSugar实现主从库读写分离
  • 面向长范围交互式 LLM 智体的强化学习
  • 动画云渲染平台技术评估与优选策略
  • 机器学习基本篇
  • 领域驱动设计叕创新,平安保险申请DDD专利
  • Java并发编程8--线程
  • React + TypeScript+ Vite 配置路径别名和vscode智能路径提示
  • AI时代:前端开发的职业发展路径拓宽
  • vsan数据恢复—vsan缓存盘故障导致虚拟磁盘文件丢失的数据恢复案例
  • 在线考试系统(代码+数据库+LW)
  • ubuntu24基于虚拟机无法从主机拖拽文件夹
  • React通用登录/注销功能实现方案(基于shadcn/ui)
  • Android 虚拟机与ClassLoader类加载笔记
  • 【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor
  • 解压rar格式的软件有哪些?8种方法(Win/Mac/手机/网页端)
  • 新型基于Go语言的恶意软件利用Telegram作为C2通信渠道
  • Postman接口测试的cookie,token,session....鉴权
  • PyCharm 中的 %reset -f 功能:一键重置控制台变量
  • 低价做网站/千锋培训机构官网
  • 南康网站网站建设/济南seo全网营销
  • 企业网站建设457/外链在线发布工具
  • 南充网站制作/品牌线上推广方案
  • 做报名统计的网站/网上做广告推广
  • wordpress 搜索提示/北京seo优化技术