从angularjs加载REST资源时,等待时间非常长

Sam*_*aid 17 python flask google-chrome-devtools angularjs flask-restful

我正在构建一个前端,正在访问一个flask/python RESTful API.我正在使用AngularJS v1.2.16.

出于某种原因,在加载REST资源之前需要花费大量时间,大部分时间都在等待.我的理解是"等待"是衡量第一个字节的时间 - 我的所有服务都在本地运行(前端,API和数据库).

Angular,API和Mongo DB都在本地运行.

鉴于服务全部在本地运行,我不知道如何调试它.有没有人有关于在哪里看的提示?我检查了所有方法,它们运行得非常快(每个REST调用不到100毫秒).当我使用邮递员时,API会立即返回.

任何想法如何修复等待,只有在通过angular加载RESTful资源时才会出现这种情况.角度$ http get请求非常简单:

myAppControllers.controller('ManageCtrl', ['$scope', '$http',
    function($scope, $http) {
        $http({
            url: 'http://127.0.0.1:5000/v1/domains/',
            method: "GET",
            headers: { 'Content-Type': 'application/json' },
        }).
        success(function(data, status, headers, config) {
            console.log('login successful');
            console.log(status);
            console.log(data);
        }).
        error(function(data, status, headers, config) {
            console.log('login failed');
        });
    }]);
Run Code Online (Sandbox Code Playgroud)

编辑:

  • 该问题仅出现在Google Chrome中,常规模式.
  • 使用隐身模式时,GET请求很快.

dd.*_*dd. 22

我们遇到了同样的问题,经过一些研究后,问题与Chrome使用连接的方式以及烧瓶的默认配置为单线程有关.

在启动flask应用程序时添加了threads = true解决了问题:

app.run(threaded=True)
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,它对我有用.我正在使用Flask + Flask-CORS和Chrome + jQuery.在我的情况下,刷新页面时不会发生长TTFB(50秒或更长时间)(我在页面加载时触发了数据获取例程). (2认同)

jho*_*rey 13

我遇到了同样的问题(在Chrome和Flask后端运行的Angular前端).在尝试了Angular 1.2.x和1.3.x以及其他十亿个排列之后,我发现的唯一"解决方案"是使用Tornado Web服务器运行Flask后端(http://www.tornadoweb.org/en)/stable /).其他WSGI容器可能有效,但这是我测试的容器.

在Flask应用程序中,粘贴以下内容:

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop

if __name__ == '__main__':
  http_server = HTTPServer(WSGIContainer(app))
  http_server.listen(5000)
  IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)

您可以键入以下命令启动Web服务器:

python myserver.py
Run Code Online (Sandbox Code Playgroud)

  • 真正的修复程序由@dd发布在下面..这样做可以完成同样的事情,因为默认情况下Tornado可能是多线程的,而Flask默认是单线程的(不知道为什么这个设计决定). (2认同)