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"

}

定义请求函数

python 复制代码
# 定义请求函数
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}"

使用多线程进行并行请求

python 复制代码
# 使用多线程进行并行请求
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)

相关推荐
bluebonnet271 小时前
【agent开发】部署LLM(一)
python·llama
HHBon2 小时前
判断用户输入昵称是否存在(Python)
linux·开发语言·python
敢敢变成了憨憨3 小时前
java操作服务器文件(把解析过的文件迁移到历史文件夹地下)
java·服务器·python
苇柠3 小时前
Java补充(Java8新特性)(和IO都很重要)
java·开发语言·windows
敲键盘的小夜猫3 小时前
Milvus向量Search查询综合案例实战(下)
数据库·python·milvus
156082072194 小时前
在QT中,利用charts库绘制FFT图形
开发语言·qt
简简单单做算法4 小时前
基于mediapipe深度学习的虚拟画板系统python源码
人工智能·python·深度学习·mediapipe·虚拟画板
小鹭同学_4 小时前
Java基础 Day27
java·开发语言
EdmundXjs4 小时前
IO Vs NIO
java·开发语言·nio
why1514 小时前
字节golang后端二面
开发语言·后端·golang