Django - 慢Ajax响应似乎被推迟了

时间:2014-08-07 18:14:08

标签: javascript ajax django

我正在使用jquery Ajax调用从服务器检索一些json数据。我使用模块时间来计算创建json数据所需的时间,并且在成功函数在客户端启动之前完成了很多工作。

在服务器端,json创建时间为0.9秒,但成功函数在30秒或更长时间后调用。

可能会发生什么?

$.ajax({
      type: "GET",
      url: "/basqui/layer/shapefile/attributesTable/loader/{{ layer.pk }}/",
      success: function(data) {
                  alert('data received');

                },
}); 

服务器端功能:

def attributeTableLoader(request, shapefile_id):
    start_time = time.time()
    features_selected = Feature.objects.filter(shapefile__pk=shapefile_id).order_by("id_relat")

    data = [dict(feature.attribute_value, **{"id":str(feature.id_relat)}) for feature in features_selected]
    jsonData= json.dumps(data)
    print("Temps final: --- %s seconds ---" % str(time.time() - start_time))
    return StreamingHttpResponse(jsonData, content_type="application/json")

1 个答案:

答案 0 :(得分:2)

对于小型回复,Django StreamingHttpResponse可能比传统HttpResponse 慢得多。

如果你不需要,尽量避免使用它; Django Docs实际上建议“StreamingHttpResponse只应在绝对需要在将数据传输到客户端之前不迭代整个内容的情况下使用。”