小编Kak*_*rot的帖子

Flask 允许多个服务器实例监听同一端口

我一直在使用烧瓶并注意到这种不寻常的行为。

我的 Flask 应用程序设置为在我的机器的端口 5000 上运行(它只有一个网卡)。

当我尝试在我的机器中启动同一烧瓶应用程序的多个实例时。

我的期望

尝试启动绑定在同一端口上的下一个实例时出现端口地址使用错误。

实际发生了什么

它们都成功启动并绑定到同一端口。我使用过的大多数传统服务器都不会出现这种行为。但值得庆幸的是,当对服务器进行 REST API 调用时,“n”个进程中仅触发一个进程。

操作系统:Windows

有人可以解释一下为什么会发生这种行为,以及如何确保 Flask 在这种情况下不会成功启动该过程。

netstat -aon | 网络统计 找到“5000”

TCP 127.0.0.1:5000 0.0.0.0:0 监听 37036
TCP 127.0.0.1:5000 0.0.0.0:0 监听 5024
TCP 127.0.0.1:5000 0.0.0.0:0 监听 61684

以上是并行运行的3个进程。

补充笔记:

  1. 我在 virtualenv 中使用它。
  2. 我编写烧瓶调用的方式。

    if __name__ == "__main__":
    main()
    app.run(port=5000)
    
    Run Code Online (Sandbox Code Playgroud)
  3. python3 <filename>.py在命令提示符处运行代码。

python flask server

6
推荐指数
1
解决办法
2785
查看次数

Node JS Express处理多个请求

我所拥有的: 我有一个nodejs express服务器获取端点,该端点依次调用其他耗时的API(例如大约2秒)。我已经通过回调调用了此函数,使得res.send作为回调的一部分被触发。res.send对象打包了一个对象,该对象将在执行这些耗时的API调用的结果之后创建。因此,仅当我从API调用中获得全部信息时,才能发送我的res.send。

一些代表性的代码。

someFunctionCall(params, callback)
{
  // do some asyncronous requests.
  Promise.all([requestAsync1(params),requestAsync2(params)]).then
  {
     // do some operations
     callback(response) // callback given with some data from the promise
  }

}
app.get('/',function(req, res){
 someFunctionCall(params, function(err, data){
    res.send(JSON.stringify(data))
   }
}
Run Code Online (Sandbox Code Playgroud)

我要什么 我希望我的服务器能够处理其它并行输入的GET请求不会被阻挡由于其他功能的REST API调用。但是问题在于,仅当实现了promise时才会发出回调,这些操作中的每一个都是异步的,但是我的线程将等待直到所有这些操作都执行。并且Node不执行下一个请求的res.send或res.end而不会接受下一个get请求。当我有多个请求进入,每个请求一个接一个执行时,这成为一个问题。

注意:我不想使用cluster方法,我只想知道如果没有它,是否有可能做到这一点。

asynchronous get node.js express

2
推荐指数
1
解决办法
6248
查看次数

标签 统计

asynchronous ×1

express ×1

flask ×1

get ×1

node.js ×1

python ×1

server ×1