无服务器 WSGI 本地服务器 运行 慢

Serverless WSGI Local Server Running Slow

我正在使用节点包 serverless-wsgi 1.4.9 to serve the routes of my serverless framework 应用程序

当我 运行 通过开发服务器 serverless wsgi serve 我遇到了问题,请求需要很长时间(10 秒 - 1 分钟)才能 return 在 [=35= 中得到响应].为避免访问数据库,我将 GET 请求发送到立即 returns 'hello world' 200.

的路由

到目前为止,我能找到的唯一可预测的行为是使用 jquery 发出请求总是会在 returning 之前造成很长的延迟。如果我尝试在浏览器选项卡中请求相同的 URL(而 jquery 请求仍在等待),该选项卡也会等待很长时间才能请求 return.

但是,一旦 jquery 请求 returns,在浏览器选项卡中调用 URL,然后立即 returns。刷新选项卡立即有响应。

有时,如果 jquery 请求处于待处理状态,在浏览器选项卡中调用 URL 将立即 return。发生这种情况时,这似乎也会使 jquery 请求 return 成为响应。

Jquery 代码如下:

  $( document ).ready(function() {
    $.get("http://localhost:5000/test", function(data, status){
      alert("Data: " + data + "\nStatus: " + status);
    });
  });

我试过重新启动服务器、浏览器和我的机器,但问题仍然存在。

我尝试了多种浏览器(safari、chrome、firefox),但都有同样的问题。

我已经尝试使用 axios 而不是 jquery 发出 javascript 请求,但请求仍然 return 缓慢。

有谁知道我可以如何解决这个问题或我可以进行任何其他调试吗?

看起来这主要是 chrome 的问题以及 chrome 使用预连接的方式

https://hackernoon.com/chrome-preconnect-breaks-singly-threaded-servers-95944be16400

解决这个问题的方法是将WSGI服务器设置为允许线程。我与团队有 raised an issue,因为如果您使用 serverless-wsgi.

,目前无法执行此操作

作为解决方法,您可以在 chrome 中关闭预连接功能。转到设置/高级/隐私和安全并关闭 'Use a prediction service to load pages more quickly'