我正在编写使用json数据接受POST请求的flask应用程序.我注意到基于传递给应用程序的数据大小,响应时间存在巨大差异.调试后,我将问题缩小到我从请求对象检索json数据的行.值得注意的是,测试是在烧瓶开发服务器上完成的.
start = time.time()
resp = json.dumps(request.json)
return str(time.time() - start)
Run Code Online (Sandbox Code Playgroud)
我计时这行和1024(可能不是巧合)的数据和较少的字符,这需要0.002s,超过1024超过1秒!这里发生了什么?这是开发服务器的限制吗?
编辑:通过request.form.get('somedata')获取POST数据同样的事情,内容长度超过1024
编辑:我无法复制Apache提供的相同示例的问题
编辑:
我开始深入研究Werkzeug模块,发现self._read(to_read)在从BaseHTTPRequestHandler传递的wsgi.py模块中读取响应消息时发生缓慢.还是不知道为什么这么慢.
这里是环境细节:Ubuntu - 10.04 Python - 2.6.5 Flask - 0.9 Werkzeug - 0.8.3
我正在构建一个前端,正在访问一个flask/python RESTful API.我正在使用AngularJS v1.2.16.
出于某种原因,在加载REST资源之前需要花费大量时间,大部分时间都在等待.我的理解是"等待"是衡量第一个字节的时间 - 我的所有服务都在本地运行(前端,API和数据库).

鉴于服务全部在本地运行,我不知道如何调试它.有没有人有关于在哪里看的提示?我检查了所有方法,它们运行得非常快(每个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)
编辑:
我一直在使用Flask应用程序,它使用Twilio处理SMS消息,将它们存储在数据库中,并通过JSONP GET请求提供对前端的访问.我已经使用supervisord对它进行了守护,这看起来效果很好,但每隔几天它就会开始挂起(即所有请求永远挂起或超时)我必须重新启动进程.(我也试过简单地用nohup运行它,但同样的问题.)我怀疑sqlite3偶尔会阻塞,但我最近的测试是写一个不涉及数据库访问的请求方法,那是超时的太.我非常困惑 - 希望你看到类似的东西或者知道可能导致这种情况的原因.
相关的代码可以在这里找到,它目前正在我的VPS上运行(并且已经停止了,截至本文)在mattnichols.net:6288
谢谢!
更新:您认为这可能是Flask的开发服务器的问题吗?我愿意相信,我的包裹与龙卷风(或类似的东西)的应用程序可以解决这个问题,但我也更长的时间运行其他的东西,而无需使用开发服务器的问题.