几年来,我有一个基于 Python 的 Google App Engine 应用程序使用 Cloud Endpoints 1.0 运行良好,没有发生任何事故。我在迁移到 Cloud Endpoints 2.0 时遇到了麻烦。
目前,在清除了其他类似问题中描述的许多先前障碍之后,我处于以下状态:
- 我有一个名为gce1的服务版本,它使用 Endpoints 1.0 并设置为接收 100% 流量的默认服务。我可以将 API 客户端和 APIs Explorer 指向
gce1-dot-myservice.appspot.com
默认值myservice.appspot.com
,一切正常。我可以在日志中验证这里发生的任何事情都在使用 GCE 1.0。 - 我有一个名为gce2的服务的第二个版本,默认情况下它不接收任何流量,但是如果我将 API 客户端或 API 资源管理器指向
gce2-dot-myservice.appspot.com
它就可以正常工作,并且我可以在日志中验证这里发生的任何事情是使用 GCE 2.0。
太好了,对吧?因此,似乎我需要做的就是将所有流量迁移到gce2
,然后我就完成了。
但是......当我这样做时,一切都会中断!默认为我现有的客户端myservice.appspot.com
提供405 POST Method Not Allowed
响应,如果我查看 APIs Explorer,突然间它现在显示了一堆我认为是多年前的过时方法,并且不再在我当前的 API 中使用。我不知道这些是从哪里来的(它们在我的代码中不存在,并且已经好几年没有了),而且无论我做什么,我都无法获得为 GCE 2.0 API 提供服务的默认服务。
最大的问题是我有成千上万的用户都指向默认的 API URL,所以让他们开始指向并不那么容易gce2-dot-myservice
,而且,我不能这样做没有任何意义t 使新默认值成为新默认值。几个月来,我一直致力于迁移到 GCE 2.0,离开 GCE 1.0 的截止日期越来越近,而 Google 支持自去年年底以来就没有对此主题作出回应。
我还应该提到我已经尝试过:
- 使用 GCE2.0 代码直接将新服务推送到默认值
- 推送一个完全没有 API 的新服务(可能会清除缓存或其他东西)
- 使用各种不同的版本名称推送服务
这些都没有奏效,尽管我没有做过任何允许长时间延迟的操作,因为我正在与真实用户一起进行实时服务。