【问题标题】:Serverless WSGI Local Server Running Slow无服务器 WSGI 本地服务器运行缓慢
【发布时间】:2019-01-05 20:50:59
【问题描述】:

我正在使用节点包serverless-wsgi 1.4.9 为我的serverless framework 应用程序的路由提供服务

当我通过开发服务器 serverless wsgi serve 运行时,我遇到了请求需要很长时间(10 秒 - 1 分钟)才能在 chrome 中返回响应的问题。为了避免访问数据库,我将 GET 请求发送到立即返回 'hello world' 200 的路由。

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

但是,一旦 jquery 请求返回,在浏览器选项卡中调用 URL 就会立即返回。刷新选项卡会立即做出响应。

有时,如果 jquery 请求未决,在浏览器选项卡中调用 URL 将立即返回。发生这种情况时,这似乎也会使 jquery 请求返回响应。

jQuery 代码如下:

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

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

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

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

有没有人知道我可以如何解决这个问题或我可以做任何额外的调试?

【问题讨论】:

    标签: python wsgi serverless-framework werkzeug


    【解决方案1】:

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

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

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

    作为一种解决方法,您可以关闭 chrome 中的预连接功能。转到设置/高级/隐私和安全并关闭“使用预测服务更快地加载页面”

    【讨论】:

      猜你喜欢
      • 2022-06-27
      • 2014-08-05
      • 2023-01-11
      • 2021-08-25
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多