首页 > 解决方案 > Flask Jinja2 页面在一段时间后冻结

问题描述

我已经在 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

标签: ajaxflaskjinja2mod-wsgid3plus

解决方案


推荐阅读