问题描述
过程
在 Flask 应用程序中,每 15 秒从 HTML 文件向主 python 文件 app.py 发送一个 AJAX 请求。
发送请求时:
-
Flask 应用对不断变化的 BigQuery 表执行查询。
-
Flask 应用程序存储结果为 Pandas 数据帧。
-
Flask 应用程序将数据帧转换为 GeoJSON 字符串。
-
Flask 应用返回 GeoJSON 字符串。
我已经检查过,正如预期的那样,每次执行查询时查询结果都不同。
app.py
>@app.route('/updateEntireFleet',methods=["GET","POST"])
@nocache
def updateEntireFleet():
df_data = performQuery2DataFrame()
data_geojson = df_data.to_geojson()## Is valid and updated GeoJSON in every request.
return jsonify(result=data_geojson)
HTML 文件 JS
$.getJSON($SCRIPT_ROOT + '/updateEntireFleet',function (data) {
entireData = data.result;
});
问题
JS 变量 entireData 保持不变。但是,每次在 Flask 路由“updateEntireFleet”中执行查询时,data_geojson 都会按预期有新的更新值,这意味着查询成功。
所以问题肯定出在
return jsonify(result=data_geojson)
或者可能在一些与缓存相关的东西中。 在浏览器 (Chrome) 的检查器 -> 'Network' 中,请求列表显示接收到的 JSON 始终相同,而不应该如此。
我尝试了什么
删除查询的某些列
如果我删除查询的某些特定列(请参阅帖子末尾的查询),一切正常(当然,已删除列中的信息在 html 文件中不可用这一事实除外)。
在 BigQuery 中运行查询
包含所有列的查询在 BigQuery 中完美运行。每次执行结果都是最新的。
如果在 Flask 应用程序中删除了标记为 (Problematic line) 的注释下方的两行,则一切正常。否则,问题仍然存在。这些行不会使查询失败,因此查询没问题。
SELECT
id,qr_code,vehicle_type,battery_level,st_x(location::geometry) as longitude,st_y(location::geometry) as latitude,--(Problematic line)
extract(EPOCH FROM last_ping_at)*1000 as last_ping_at_ms,--(Problematic line)
ST_ClusterDBSCAN(location::geometry,eps := 0.0005,minPoints := 5) OVER () AS cluster_num
FROM
vehicle v
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)