部署在Cloud Run的Python应用调用Google Cloud Vision客户端超时问题
解决Cloud Run下Google Cloud Vision Python客户端超时问题
以下是针对你遇到的问题的具体解决办法:
显式指定服务账号凭据:强制客户端库使用指定的服务账号密钥,跳过元数据服务器请求。可以将服务账号JSON文件通过Cloud Run的Secret Manager挂载为文件,然后在代码中加载:
from google.cloud import vision from google.oauth2 import service_account # 替换为Secret Manager挂载的文件路径 credentials = service_account.Credentials.from_service_account_file("/secrets/service-account.json") client = vision.ImageAnnotatorClient(credentials=credentials)调整客户端超时配置:客户端默认超时可能不适应Cloud Run的网络环境,可在创建客户端或调用接口时设置更长的超时时间:
# 创建客户端时全局设置超时 from google.cloud import vision client = vision.ImageAnnotatorClient(timeout=30) # 设置30秒超时 # 或者单独给接口调用设置超时 response = client.text_detection(image=your_image, timeout=30)禁用元数据服务器自动检测:在Cloud Run的环境变量配置中添加
GOOGLE_AUTH_DISABLE_METADATA_SERVER=true,阻止客户端库尝试访问元数据服务器,强制使用Cloud Run的默认服务账号凭据(需确保服务账号权限正确)。更新客户端依赖库:旧版本的
google-cloud-vision、google-auth可能存在Cloud Run兼容性问题,执行升级命令:pip install --upgrade google-cloud-vision google-auth google-api-core再次确认服务账号权限:检查Cloud Run使用的服务账号是否拥有
Cloud Vision API User(roles/cloudvision.user)权限,确保能正常调用Vision API。
内容的提问来源于stack exchange,提问作者okonomichiyaki
相关产品推荐
相关产品推荐

