运行一个 Google App Engine 实例,前端在 nodejs 中,后端服务器在 python 中

Posted

技术标签:

【中文标题】运行一个 Google App Engine 实例,前端在 nodejs 中,后端服务器在 python 中【英文标题】:Running One Instance of Google App Engine with frontend in nodejs and backend server in python 【发布时间】:2018-10-21 04:41:36 【问题描述】:

我对 GCP 和 GAE,还有 nodejs 和 python 和网络(我知道)感到很熟悉。

[+] 我所拥有的

基本上,我有一些 nodejs 代码接受一些输入,然后应该将该输入发送到一些 python 代码,这些代码将对其执行更多操作。我的第一个想法是通过 GAE 部署 nodejs 代码,然后将 python 代码托管在 python 服务器中,然后从 nodejs 前端向 python 服务器后端发出 post 请求。

[+] 我想做的事:

只需将我的 nodejs 代码和我的 python 代码部署在同一个项目和 GAE 实例中,以便 nodejs 是人们看到的前端,但 python 服务器也在同一环境中运行,并且可以与nodejs 无需在线发送任何内容。

[+] 我读过的内容

https://www.netguru.co/blog/use-node-js-backend

Google App Engine - Front and Backend Web Development

和无数其他谷歌搜索这种类型的设置,但无济于事。 如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

好的,所以可能有更好的解决方案,但我认为通往胜利的途径可能如下: - 使用烧瓶并编写 python 服务器 - 通过 GAE 部署 python 服务器 - 拥有服务器提供 nodejs 代码 【参考方案1】:

您不能同时在同一个实例中运行 python 和 nodejs,但它们可以作为单独的服务运行,每个服务在同一个 GAE 应用程序/项目中都有自己的实例。见Service isolation,也许Deploying different languages services to the same Application [Google App Engine]

使用发布请求可以很好地工作,但可能需要一些努力来确保没有外部访问。

由于您打算将 nodejs 服务用作前端,因此您只能使用 flexible environment,这限制了服务间通信选项 - 您不能使用 push queues(仅在standard environment) 恕我直言,这将是比发布请求更好/更安全的解决方案。

另一个安全的通信选项是让 nodejs 服务将数据放入数据存储并让 python 服务从那里提取数据 - 数据存储由同一 GAE 应用程序内的所有实例/版本/服务共享。还有更松散耦合的恕我直言 - 每个服务都可以运行(至少一段时间)而另一个服务不存在(如果使用 post 请求则不可能)。

可能感兴趣:How to tell if a Google App Engine documentation page applies to the standard or the flexible environment

更新:

Node.JS 目前也可以在标准环境中使用,因此您可以使用这些功能,请参阅:

Now, you can deploy your Node.js app to App Engine standard environment Google App Engine Node.js Standard Environment Documentation

【讨论】:

以上是关于运行一个 Google App Engine 实例,前端在 nodejs 中,后端服务器在 python 中的主要内容,如果未能解决你的问题,请参考以下文章

可视化负载均衡器在Google App Engine上的多个实例上分发请求

Google Cloud App Engine 上的 Nodejs 应用程序未启动

通过负载平衡器在 Google App Engine 上的多个实例中可视化请求分布

Google App Engine 通过内部网络与 Compute Engine 通信

如何为Google App Engine实例指定区域?

建立数据库连接时出错:Google App Engine Deploy