运行Google Cloud DocumentAI Python示例代码返回503 DNS解析错误
解决方案
按以下顺序排查修改即可:
- 修正processor资源名构造错误
你当前手写的name参数多了:process后缀,该后缀是API请求路径的一部分,不属于资源名的内容。推荐直接用客户端内置的资源路径构造方法避免手写错误:
# 删掉原来的手写name行,替换成下面这行 name = client.processor_path(project_id, location, processor_id)
- 删除强制指定grpc DNS解析器的配置
你代码里的os.environ['GRPC_DNS_RESOLVER'] = 'native'会在多数非原生Linux环境下导致DNS解析异常,直接删除这行即可。 - 显式指定所有区域的接口端点
不要仅对eu区域配置endpoint,所有区域都显式声明,避免客户端默认拼接地址出错:
opts = {"api_endpoint": f"{location}-documentai.googleapis.com"}
- 排查网络代理配置
grpc默认不会读取系统代理配置,如果你需要走代理访问谷歌服务,需要额外添加环境变量:
# 替换成你自己的代理地址 os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890' os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'
- 确认本地身份凭据有效
运行gcloud auth application-default login完成本地身份授权,确保你的账号有对应DocumentAI处理器的调用权限。
核心修改后代码片段示例
from google.cloud import documentai_v1 as documentai import os project_id= '123456789' location = 'us' processor_id = '1a23345gh823892' file_path = 'document.jpg' # 有代理需求就加下面两行,不需要就删掉 # os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890' # os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890' def quickstart(project_id: str, location: str, processor_id: str, file_path: str): # 所有区域都显式指定endpoint opts = {"api_endpoint": f"{location}-documentai.googleapis.com"} client = documentai.DocumentProcessorServiceClient(client_options=opts) # 用官方方法构造资源名,不会出错 name = client.processor_path(project_id, location, processor_id) with open(file_path, "rb") as image: image_content = image.read() document = {"content": image_content, "mime_type": "image/jpeg"} request = {"name": name, "raw_document": document} # 后续逻辑保持不变 result = client.process_document(request=request) # ...其余原有代码...
内容的提问来源于stack exchange,提问作者mommomonthewind
相关产品推荐
相关产品推荐

