运行一个 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 上的多个实例中可视化请求分布