Python 在Flask中呈现Datatable非常慢
如何优化数据表呈现。我的PG表包含35k+行,pandas dataframe的速度不是很慢,但在我的HTML页面中呈现Datatable需要很长时间: app.py HTMLPython 在Flask中呈现Datatable非常慢,python,flask,datatable,Python,Flask,Datatable,如何优化数据表呈现。我的PG表包含35k+行,pandas dataframe的速度不是很慢,但在我的HTML页面中呈现Datatable需要很长时间: app.py HTML 您的视图函数中有很多内容 您正在从API下载数据 您正在将json转换为字符串,然后再转换为数据帧 您正在以html呈现数据帧 然后将所有这些信息发送回浏览器 当您只考虑等待外部API的网络延迟,然后等待将其转换回客户端时,这可能是等待的一个重要部分。还考虑在HTML中呈现的35000行可以是40-50MB,即使在快速连
您的视图函数中有很多内容
当您只考虑等待外部API的网络延迟,然后等待将其转换回客户端时,这可能是等待的一个重要部分。还考虑在HTML中呈现的35000行可以是40-50MB,即使在快速连接的情况下,也需要相当长的时间在网络环境中移动。 如果您创建了一个非常基本的HTML页面,并将以下数据复制了35000次,那么您将得到一个大小为5MB的网页,对于HTML页面来说,这被认为是一个很大的页面
你好
样本数据
想象一下,如果数据帧的每一行都包含更多的数据,那么数据量会大多少
加快速度有很多选择,但最基本的是:
- 如果可以避免的话,不要让视图函数依赖外部API
- 您可能希望对大型数据集进行分页
- 以比HTML(JSON甚至CSV)更小的格式将数据发送回浏览器,并允许客户端对其进行解析。这减少了移动大文件的网络延迟
@app.route('/html_one', methods=["POST","GET"])
def referentiel_communes():
r = requests.get('https://api/', params=payload, verify=False)
data_dict = r.json()
data_str = json.dumps(data_dict)
df = pd.read_json(data_str)
print(df)
return render_template('referentiel_communes.html', tables=[df.to_html(table_id = 'html_one',classes="display table table-striped table-bordered")], titles=df.columns.values, header="true")
<div class="col-sm-12">
{% for table in tables %}
<!-- {{titles[loop.index]}} -->
{{ table|safe }}
{% endfor %}
</div>
var html_one = $('#html_one').DataTable({
select: true,
fixedHeader: true,
});