python - 带有 Flask 的 Google Cloud Endpoints API

标签 python google-app-engine flask sqlalchemy google-cloud-endpoints

亲们: 我正在考虑基于 Flask 和 SqlAlchemy 构建我的应用程序的服务器端。我正在考虑将这些托管在 Google 云平台上。我对 Google Endpoints API 的 promise 很感兴趣,但是我不得不在我必须为我的 REST 服务编写的函数之上编写的额外代码推迟了。

有人使用过 Google App Engine 上的 Flask 与 Google Endpoints 的组合吗?有什么建议/指示吗?

谢谢。

-拉吉

最佳答案

短语“Google Cloud Endpoints”在某种程度上意味着两件事:

  1. 这是一个软件库(Python 包),可让您编写 API 并在 Python 应用程序可以运行的任何地方运行它们
  2. 它也是一项 Google Cloud 服务,可让您
    1. 在与您的其他 GAE 服务(即 UI)不同的位置查看您的日志
    2. https://console.cloud.google.com/endpoints/portal 上查看 API 使用情况统计信息的更多详细信息

当将 Cloud Endpoints 视为一个软件库时,它类似于使用 Flask-RESTful 编写 API,但会强制您做出以下两个设计决策之一:

  1. OpenAPI
  2. Google 远程 RPC

使用 endpoints Python 包编写 API 后,您就可以选择如何部署它。您可以将其部署为自己的 GAE 服务或部署到上述云端点服务。在那里部署它基本上是代表您使用 GAE 来运行您的 API(使用 endpoints Python 包编写)。

在我看来,除非您拥有非常简单的 API(即仅对数据存储实体执行 CRUD 操作),否则 Cloud Endpoints 尚未准备就绪。之所以这么说是因为

  1. Cloud Endpoints 仅限于今年即将停用的 Python 2.7
  2. Cloud Endpoints 与其他 Google API Python 包(即文本转语音)的要求存在冲突,这意味着您的 API 无法做任何有趣的事情。
  3. 如您所述,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/

相关文章:

python - 重构这个分组密码键控函数

python - Pylint 仅显示警告和错误

python - 使用 `or` 会不会是 Pythonic,类似于 PHP 使用 `or die()` 的方式?

python - 在 Flask 中将表单 POST 对象转换为适合 mongodb 的表示形式

javascript - FlaskWTF 如何向 Vue 前端发送 CSRF token

python - 在 Python 中进行类似 jquery 的 HTML 解析?

java - 如何向所有 Google App Engine 实例广播数据?

java - 如何将 appengine 数据库从一个应用程序复制到另一个应用程序 - java 项目

google-app-engine - Google App Engine Go 1.11 应用程序无法访问 Google 电子表格

python - 仅在 Flask 应用程序中显示未分类的消息