烧瓶Jinja2页面在一段时间后冻结

时间:2018-06-24 00:58:07

标签: ajax flask jinja2 mod-wsgi d3plus

我已在具有mod_wsgi的Ubuntu 16.04 x64(阿里云)的Apache2上部署了一个简单的 Flask应用程序。我正在将mysql用作同一ubuntu服务器实例上的数据库服务器。 python版本为 3.5

在应用程序的后端,我正在处理来自一些相对较大的数据库表的一些数据库查询中的数据。

在前端页面中,我正在可视化期望通过 D3PLUS JS库从后端获取的数据。而且,在单个页面中,我将在4个html div中显示4个图表/图形,并在另外两个div中显示文本数据。数据的所有请求当前均由 ajax发布处理。

我已经通过

确保了对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 request 的批处理(实际上只有一个请求处理了后端的所有请求)发送了两次后,作为响应,页面永久冻结。 任何帮助都会得到鼓励。提前致谢 !

编辑/更新::我在此页面中生成的图表/图形是 tree_map,pie,2条形图。全部与.format({"locale":"zh_CN"})一起使用。使用的版本D3Plus V1

0 个答案:

没有答案