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

Mac本地运行Google Ads API Python客户端时gRPC next_event调用极慢

排查Mac本地Google Ads API gRPC延迟问题

核心现象

本地运行Google Ads API Python客户端时突然出现严重延迟,哪怕是拉取广告系列名称这类基础GAQL查询也受影响。通过cProfile分析发现,grpc._cython.cygrpc.SegregatedCall的next_event方法单次调用耗时8-10秒。相同代码在其他机器运行正常,更换Python、google-ads及gRPC版本后问题仍存在。

性能分析数据:

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    8.123    8.123    8.126    8.126 {method 'next_event' of 'grpc._cython.cygrpc.SegregatedCall' objects}

本地环境排查步骤

1. 检查网络配置

  • 关闭VPN/代理工具:全局代理或VPN的路由规则往往会导致gRPC请求卡住,完全退出后再测试API调用。
  • 切换网络环境:比如从公司内网切到家用Wi-Fi或手机热点,排除本地DNS解析、路由转发的问题。
  • 用grpcurl测试连通性:直接调用Google Ads API端点验证基础gRPC连接是否延迟:
    grpcurl -plaintext googleads.googleapis.com:443 list google.ads.googleads.v14.services.GoogleAdsService
    
    如果这个命令也慢,说明是本地到Google gRPC服务的网络链路问题,和代码无关。

2. 排查防火墙与安全软件

  • 临时关闭系统防火墙:打开「系统设置」→「网络」→「防火墙」,关闭后测试,部分防火墙规则会拦截gRPC的HTTP/2流量,导致握手延迟。
  • 退出第三方安全工具:比如CleanMyMac、Little Snitch这类工具的网络监控规则可能误判gRPC请求,暂时退出后再测试。

3. 重置DNS缓存

Mac DNS缓存损坏可能导致域名解析延迟,执行以下命令重置:

# macOS Ventura及以上版本
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# 旧版本macOS
sudo killall -HUP mDNSResponder

执行后重启终端,重新运行API代码。

4. 调整gRPC的HTTP/2配置

gRPC默认使用HTTP/2,本地环境可能存在兼容性问题,可临时强制切换到HTTP/1.1测试:

import os
os.environ['GRPC_ENABLE_FORK_SUPPORT'] = '0'
os.environ['GRPC_HTTP2_MAX_PINGS_WITHOUT_DATA'] = '0'
os.environ['GRPC_USE_CUSTOM_SELECTOR'] = 'false'

如果切换后延迟消失,说明是HTTP/2在本地环境的兼容性问题。

5. 检查系统资源占用

  • 打开「活动监视器」:查看CPU、内存、磁盘IO的占用情况,若有杀毒软件、备份工具等进程占用大量资源,会导致gRPC线程被阻塞。
  • 检查端口占用:用lsof查看443端口是否被异常进程持有:
    lsof -i :443
    

6. 重建干净的Python虚拟环境

即使更换过版本,旧虚拟环境可能有残留依赖干扰,重新创建干净环境:

rm -rf venv/
python3 -m venv venv
source venv/bin/activate
pip install google-ads  # 安装指定版本

7. 更新Mac系统

部分旧版本macOS存在网络栈或Cython兼容性问题,尝试更新到最新稳定版系统后再测试代码。

内容的提问来源于stack exchange,提问作者Adam Walters

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:25:32