亲们: 我正在考虑基于 Flask 和 SqlAlchemy 构建我的应用程序的服务器端。我正在考虑将这些托管在 Google 云平台上。我对 Google Endpoints API 的 promise 很感兴趣,但是我不得不在我必须为我的 REST 服务编写的函数之上编写的额外代码推迟了。
有人使用过 Google App Engine 上的 Flask 与 Google Endpoints 的组合吗?有什么建议/指示吗?
谢谢。
-拉吉
最佳答案
短语“Google Cloud Endpoints”在某种程度上意味着两件事:
- 这是一个软件库(Python 包),可让您编写 API 并在 Python 应用程序可以运行的任何地方运行它们
- 它也是一项 Google Cloud 服务,可让您
- 在与您的其他 GAE 服务(即 UI)不同的位置查看您的日志
- 在 https://console.cloud.google.com/endpoints/portal 上查看 API 使用情况统计信息的更多详细信息
当将 Cloud Endpoints 视为一个软件库时,它类似于使用 Flask-RESTful 编写 API,但会强制您做出以下两个设计决策之一:
- OpenAPI
- Google 远程 RPC
使用 endpoints
Python 包编写 API 后,您就可以选择如何部署它。您可以将其部署为自己的 GAE 服务或部署到上述云端点服务。在那里部署它基本上是代表您使用 GAE 来运行您的 API(使用 endpoints
Python 包编写)。
在我看来,除非您拥有非常简单的 API(即仅对数据存储实体执行 CRUD 操作),否则 Cloud Endpoints 尚未准备就绪。之所以这么说是因为
- Cloud Endpoints 仅限于今年即将停用的 Python 2.7
- Cloud Endpoints 与其他 Google API Python 包(即文本转语音)的要求存在冲突,这意味着您的 API 无法做任何有趣的事情。
- 如您所述,
endpoints
的语法有点冗长,但是,这是因为 Cloud Endpoints 不仅为您提供 API,而且还提供供其他开发人员使用的 OpenAPI/Swagger UI探索您的 API。它还处理身份验证等。在考虑使用所需的工作时,例如flask-restful-swagger-2.0
为了装饰所有的类和方法,endpoints
代码开销我认为是非常合理的。
我花了半周时间尝试编写一个架构与您的应用类似的应用:GAE 上的 Flask UI 以及托管我的 API 的 Cloud Endpoints。最后,由于上面的第 1 项和第 2 项,我决定放弃它并将 Flask 也用作我的 API 作为单独的 GAE 服务:这将使日志易于过滤并给我一些不错的图表以了解使用情况,延迟等
关于python - 带有 Flask 的 Google Cloud Endpoints API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30023871/