Python2迁移至Python3时出现Memcache API代理未找到错误
App Engine Python3 中Memcache代理缺失错误解决
场景信息
app.yaml环境变量配置
env_variables: CURRENT_VERSION_TIMESTAMP: "1677721600" MEMCACHE_USE_CROSS_COMPATIBLE_PROTOCOL: 'True' NDB_USE_CROSS_COMPATIBLE_PICKLE_PROTOCOL: 'True' DEFERRED_USE_CROSS_COMPATIBLE_PICKLE_PROTOCOL: 'True'
main.py代码片段
from google.appengine.api import users from google.appengine.api import wrap_wsgi_app app.wsgi_app = wrap_wsgi_app(app.wsgi_app)
触发的错误
File "/layers/google.python.pip/pip/lib/python3.12/site-packages/google/appengine/api/apiproxy_stub_map.py", line 69, in CreateRPC assert stub, 'No api proxy found for service "%s"' % service AssertionError: No api proxy found for service "memcache"
解决步骤
- 本地开发环境:
确保使用dev_appserver.py启动本地服务,默认模拟器会加载Memcache stub。如果自定义了启动参数,检查是否遗漏了Memcache服务的加载,无需额外配置即可启用。 - GAE部署环境:
确认你的GCP项目已启用Cloud Memorystore(Memcache)服务,同时确保应用的服务账号拥有roles/memcache.user或相关访问权限。 - 依赖与版本检查:
检查google-cloud-memcache和App Engine相关SDK包的版本,确保与Python 3.12兼容,建议使用官方推荐的版本范围。 - 调整兼容配置:
如果你的应用不需要兼容旧版App Engine环境,尝试移除MEMCACHE_USE_CROSS_COMPATIBLE_PROTOCOL环境变量,避免触发旧的代理逻辑导致异常。 - 验证WSGI包裹顺序:
确保wrap_wsgi_app是在创建WSGI应用实例之后执行的,顺序颠倒可能导致服务代理未正确初始化。
内容的提问来源于stack exchange,提问作者ffejrekaburb
相关产品推荐
相关产品推荐

