我已经在 Ubuntu 16.04 x64(阿里巴巴云)的 Apache2 上使用 mod_wsgi 部署了一个简单的 Flask 应用程序。我在同一个 ubuntu 服务器实例上使用 mysql 作为我的数据库服务器。蟒蛇版本是3.5。
在应用程序的后端,我正在处理来自一些相对较大的数据库表的一些数据库查询的数据。
在前端页面中,我正在可视化我希望通过D3PLUS JS 库从后端获取的数据。而且,在一个页面中,我在 4 个 html div 和另外两个 div 中显示 4 个图表/图形以显示文本数据。目前所有的数据请求都由ajax post处理。
我通过以下方式确保了对 ajax 请求的 CSRF 保护
var csrf_token = "{{ csrf_token() }}";
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrf_token);
}
}
});
发布请求需要大约 20-25 秒才能从后端正常获得响应。这是发布请求的示例:
$('#company_button').on('click', function(event) {
var company_name = ($('#company_select').select2('data'))[0].text;
if (company_name==null){
alert('Enter a name please!');
}
else{
handle_all(company_name);
}
event.preventDefault();
});
function handle_all(company_name){
show_loader();
//baike_getter(event,company_name);
//recommend_getter(company_name);
$.ajax({
type:"POST",
contentType: "application/json; charset=utf-8",
data : JSON.stringify({company_name : company_name}),
dataType: "json",
url: flask_util.url_for('_company_info_all'),
success: function (data) {
JSON.parse(data[0].recommendation);
remove_loader();
update_company(data[0].company_general[0]);
all_graphs(data[0].country,data[0].product,data[0].haiguan,data[0].shipping);
recommend_getter2(company_name);
baike_getter2(event,company_name);
}
});
}
作为响应获得的JSON数据的大小约为 5-10 KB,其中包括中文文本(Unicode)。
问题是,在将post请求的批处理(实际上只有一个处理后端处理所有内容的请求)发送到后端后,当数据作为响应时,页面会永远冻结。将鼓励任何帮助。提前致谢 !
编辑/更新:我在此页面中生成的图表/图形是tree_map,pie,2 bar charts。都与.format({"locale":"zh_CN"})
。使用的版本D3Plus V1