我对GCP和GAE,nodejs和python及网络(我知道)感到不知所措。
[+]我有:
基本上,我有一些nodejs代码,它们接受一些输入,然后应该将该输入发送到一些python代码,它将对它做更多的工作。我的第一个想法是通过GAE部署nodejs代码,然后将python代码托管在python服务器中,然后从nodejs前端向python服务器后端发出发布请求。
[+]我想做的是:
只需在同一项目和GAE实例中部署我的nodejs代码和我的python代码,以便nodejs是人们看到的前端,但是python服务器也可以在同一环境中运行,并且可以与nodejs进行通信而无需发送任何在线内容。
[+]我读过的
https://www.netguru.co/blog/use-node-js-backend
Google App Engine - Front and Backend Web Development
还有无数其他Google搜索此类设置,但无济于事。
如果有人能指出正确的方向,我将不胜感激。
参考方案
您不能在同一实例中同时运行python和nodejs,但它们可以作为单独的服务运行,每个服务在同一GAE应用程序/项目中具有各自的实例。请参见Service isolation,也许还有Deploying different languages services to the same Application [Google App Engine]
使用发帖请求可以很好地工作,但是可能会花费一些精力来确保没有外部访问。
由于您打算用作nodejs服务的前端,因此仅限于使用flexible environment,这限制了服务间通信选项-您不能使用push queues(仅在standard environment中受支持) )哪种IMHO比发布请求更好或更安全。
另一个安全的通信选项是让nodejs服务将数据放入数据存储中,并让python服务从那里获取数据-数据存储由同一GAE应用内的所有实例/版本/服务共享。同样,松散耦合的恕我直言-每个服务都可以运行(至少一会儿),而另一个服务不存活(如果使用发布请求,则不可能)。
可能感兴趣: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
我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
加载并保持变量/对象在python Flask服务器中的文件之间可访问 - python当启动我的flask应用程序时,我希望它立即加载一个对象,并且希望该对象可用于其他文件中定义的功能。现在设置的方式如下:object = someObjectToLoadAtServerStartAndAlwaysKeepInMemoryAndAccessFromAnyPyFile 在run.py中,位于文件夹Project中:from app import…
Python:集群作业管理 - python我在具有两个阶段的计算群集(Slurm)上运行python脚本,它们是顺序的。我编写了两个python脚本,一个用于阶段1,另一个用于阶段2。每天早上,我检查所有第1阶段的工作是否都以视觉方式完成。只有这样,我才开始第二阶段。通过在单个python脚本中组合所有阶段和作业管理,是否有一种更优雅/自动化的方法?我如何知道工作是否完成?工作流程类似于以下内容:w…
Python-Excel导出 - python我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…
Python:传递记录器是个好主意吗? - python我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…