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

2024-04-19 12:55:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序,它使用两个需要相互通信的服务器。一个是python服务器,它实现BaseHTTPRequestHandler的do\u方法。另一个是node js的开发服务器/生产服务器,它承载一个React js应用程序。你知道吗

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

每当我运行node js development server(在本地主机:3000)和python服务器(在本地主机:3001),python服务器能够识别发出了POST请求,并继续执行并获得响应。但是,当我运行node js production server(在本地主机:5000)和python服务器(在本地主机:3001),节点js服务器无法与python服务器通信。为什么会这样?你知道吗


Tags: 方法服务器node应用程序消息amazonserverjs
2条回答

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

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

 ngrok http <PORT>

其中<PORT>是3001,因为这是dev服务器正在侦听的端口。你知道吗

这个答案是假设你实际上正在运行节点.js实例在生产服务器上,而不是在本地计算机上。如果不是这样的话,这可能不会解决你的问题。你知道吗

经过大量的研究,我觉得让两个本地应用程序在不同的端口上运行有点不切实际,或者说比应该的要复杂得多。你知道吗

因此,我将我的项目迁移到使用Django,而不是使用React JS,并将其与python集成。这样Django的后端就可以处理我发出的POST请求,并根据需要更新DOM。你知道吗

所有这些都是针对一个chatbot应用程序的,该应用程序假设接受一个用户的问题,调用Amazon的Lex来获取一个意图和实体,然后spaCy,一个ML框架,搜索我们的数据库来寻找答案。然后返回答案,然后更新DOM而不刷新页面。你知道吗

相关问题 更多 >