最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在python服务器和节点服务器之间通信

IT培训 admin 12浏览 0评论

在python服务器和节点服务器之间通信

我有一个应用程序,它使用两台需要相互通信的服务器。一个是实现BaseHTTPRequestHandler的do_METHODs的python服务器。另一个是托管React JS应用程序的node js的开发服务器/生产服务器。

node js应用程序使用POST请求从输入中获取消息,然后python服务器从该POST请求中提取该消息,然后使用Boto3调用Amazon的Lex以获取响应。

[无论何时运行node js开发服务器(在localhost:3000上)和python服务器(在localhost:3001上),python服务器都能够识别出已发出POST请求并继续进行并获得响应。但是,当我运行node js生产服务器(在localhost:5000上)和python服务器(在localhost:3001上)时,node js服务器无法与python服务器通信。为什么会这样?

回答如下:

如果要在本地开发服务器和Internet上的任何其他服务器之间进行通信,则需要建立连接隧道。默认情况下,路由器配置为拒绝所有传入流量,因此,当您的节点实例尝试与开发服务器通信时,它不会通过防火墙。

一个简单的解决方案是使用ngrok。安装完毕后,打开一个新的终端窗口并运行:

 ngrok http <PORT>

其中<PORT>为3001,因为这是开发服务器正在侦听的端口。

此答案假设您实际上是在生产服务器上而不是在本地计算机上运行node.js实例。如果不是这种情况,那么这可能无法解决您的问题。

在python服务器和节点服务器之间通信

我有一个应用程序,它使用两台需要相互通信的服务器。一个是实现BaseHTTPRequestHandler的do_METHODs的python服务器。另一个是托管React JS应用程序的node js的开发服务器/生产服务器。

node js应用程序使用POST请求从输入中获取消息,然后python服务器从该POST请求中提取该消息,然后使用Boto3调用Amazon的Lex以获取响应。

[无论何时运行node js开发服务器(在localhost:3000上)和python服务器(在localhost:3001上),python服务器都能够识别出已发出POST请求并继续进行并获得响应。但是,当我运行node js生产服务器(在localhost:5000上)和python服务器(在localhost:3001上)时,node js服务器无法与python服务器通信。为什么会这样?

回答如下:

如果要在本地开发服务器和Internet上的任何其他服务器之间进行通信,则需要建立连接隧道。默认情况下,路由器配置为拒绝所有传入流量,因此,当您的节点实例尝试与开发服务器通信时,它不会通过防火墙。

一个简单的解决方案是使用ngrok。安装完毕后,打开一个新的终端窗口并运行:

 ngrok http <PORT>

其中<PORT>为3001,因为这是开发服务器正在侦听的端口。

此答案假设您实际上是在生产服务器上而不是在本地计算机上运行node.js实例。如果不是这种情况,那么这可能无法解决您的问题。

发布评论

评论列表 (0)

  1. 暂无评论