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

Python调用外部gRPC API报错‘gRPC requires HTTP/2’如何解决?

解决gRPC API调用的HTTP/2报错问题

目标API基于gRPC协议实现,而requests库默认使用HTTP/1.1发起请求,这就是报错gRPC requires HTTP/2的核心原因。以下是两种可行的解决办法:

方法一:使用gRPC原生客户端调用(推荐)

这是适配gRPC协议的标准方式,性能和兼容性最优,步骤如下:

  1. 安装依赖库
pip install grpcio grpcio-tools
  1. 获取目标API的.proto定义文件(由API提供方给出),生成Python客户端代码
# 替换为实际的proto文件路径与名称
python -m grpc_tools.protoc -I./proto --python_out=. --grpc_python_out=. ./proto/company_content_search.proto
  1. 用生成的客户端代码发起调用
import grpc
# 导入生成的proto相关模块
import company_content_search_pb2
import company_content_search_pb2_grpc

def search_company_content():
    # 创建加密gRPC通道,仅保留域名与默认端口443
    with grpc.secure_channel('search.api.company.com:443', grpc.ssl_channel_credentials()) as channel:
        stub = company_content_search_pb2_grpc.SearchStub(channel)
        # 按照proto定义构造请求参数
        request = company_content_search_pb2.SearchRequest(
            query="你的搜索关键词",
            # 补充其他必填参数
        )
        response = stub.Search(request)
        print(response)

if __name__ == '__main__':
    search_company_content()

方法二:用支持HTTP/2的HTTP客户端调用(适合临时调试)

若目标API开启了gRPC-REST/JSON转码功能,可使用支持HTTP/2的httpx库发起请求:

  1. 安装依赖库
pip install httpx[http2]
  1. 编写调用代码(需严格匹配开发者工具中捕获的Payload格式)
import httpx
import asyncio

async def call_search_api():
    async with httpx.AsyncClient(http2=True) as client:
        url = "https://search.api.company.com/company.content.search.v1.Search/Search"
        # 替换为实际请求体结构
        payload = {
            "query": "你的搜索关键词",
            # 其他请求参数
        }
        response = await client.post(url, json=payload)
        print(response.text)

if __name__ == '__main__':
    asyncio.run(call_search_api())

注意事项

  • 方法一必须依赖API的proto定义文件,是生产环境的首选方案。
  • 方法二仅适用于目标API支持JSON转码的场景,请求体格式需完全匹配。
  • 确保Python版本≥3.7,依赖库为最新稳定版,避免HTTP/2支持缺失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:15:15