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

时间:2018-07-29 11:23:34

标签: python wsgi serverless-framework werkzeug

我正在使用节点包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请求,但请求返回缓慢。

有人知道我将如何解决这个问题或我可以做的其他调试工作吗?

1 个答案:

答案 0 :(得分:1)

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

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

解决此问题的方法是将WSGI服务器设置为允许线程化。我与团队中有raised an issue人,因为如果您使用serverless-wsgi,目前无法做到这一点。

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