如何在烧瓶python中通知用户有关计算进度的信息

时间:2018-10-20 20:40:55

标签: python flask streaming computation

我正在烧瓶上提供一些计算结果。

对于复杂的项目,可能会花费一些时间,并且我想显示一个进度条或其他内容,以告知用户系统实际上正在执行某项操作并且未冻结。

我无法估计需要多长时间。

从概念上讲,在运行计算时,如何在烧瓶中向用户实施通知?它类似于流数据吗?

我知道这听起来很普通,我在寻求解决问题的建议,或者是伪代码的脚手架,该伪代码显示了前端的GET ajax如何处理flask响应,应该通知正在运行但尚未完成的计算进度。

1 个答案:

答案 0 :(得分:0)

我认为您所描述的更多是结构性问题,与Flask并不完全相关。后端(在本例中为Flask)提供了一个api,在客户端,您需要正确处理结果表示,包括等待时间。

假设您使用Flask实现并公开了API,则可以通过以下方式使用javascript处理来自前端的调用:

running example

# HTML
<div class="status" onclick="refresh()">click me</div>

# JAVASCRIPT
function refresh() {
  var status = document.querySelector('.status');
  status.textContent = "calling api";
  callAPI();

  function callAPI() {
    return new Promise(function (resolve, reject) {
      // Flask API call here ...
      setTimeout(function(){ resolve()}, 2000);
    });
  }

  callAPI().then(function(result) {
    status.textContent =  "show results";
  });
}