首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在后端任务完成后刷新首页

如何在后端任务完成后刷新首页
EN

Stack Overflow用户
提问于 2018-11-18 12:39:22
回答 1查看 2.2K关注 0票数 2

我正在用python烧瓶设计一个web应用程序,处理流程如下:

  1. 用户选择一个指定的URL,并要求服务器站点做一些耗时的任务;
  2. 然后在一个新线程中运行耗时的任务;
  3. 在完成#2之后,服务器将更新一些关于URL的信息,我需要刷新#1中的页面

我不知道如何通知“完成”状态的前端,以便刷新页面。

有人能帮我吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-18 14:07:10

使用烧瓶-socketio可能会满足您的要求。它在前端和后端之间建立了一个连接,它允许后端发出消息,并且前端注册了一个回调,当它接收到事件时会触发回调。

代码语言:javascript
运行
复制
$ pip install flask-socketio

app.py

代码语言:javascript
运行
复制
import json
import time

from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)


@app.route('/')
def hello(name=None):
    return render_template('index.html')


@socketio.on('long-running-event')
def handle_my_custom_event(input_json):
    time.sleep(5)
    emit('processing-finished', json.dumps({'data': 'finished processing!'}))


if __name__ == '__main__':
    socketio.run(app)

模板/index.html

代码语言:javascript
运行
复制
<html>
<body>
<button id="long-running-operation">Process data</button>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>
<script type="text/javascript" charset="utf-8">
    var socket = io.connect('http://' + document.domain + ':' + location.port);

    let button = document.getElementById('long-running-operation');

    button.addEventListener('click', () => {
      socket.emit('long-running-event', {data: 'process data'});
    });

    socket.on('processing-finished', function (data) {
      alert(JSON.parse(data).data)
    });

</script>
</body>
</html>

然后用python app.py运行这个应用程序。访问http://127.0.0.1:5000/浏览器中的应用程序并单击按钮。该按钮将发送'long-running-event'请求烧瓶和烧瓶处理它的睡眠5秒,以模拟一个长时间运行的过程。然后,烧瓶发出'processing-finished消息,javascript通过通知烧瓶发送的消息,触发注册为侦听该事件的回调。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53360968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档