我创建了一个页面,该页面允许用户上传excel文件,然后将其解析为列,然后将行一次插入数据库500行。
这不是一个非常漫长的过程-25到90秒之间,但是足够长,我想以状态消息和/或进度条的形式给用户一些反馈,让他们知道它实际上仍在工作。
我的应用程序是用烧瓶编写的,如下所示:
app.py
from flask import Flask, render_template, request
import tqdm
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def fun():
if request.method == 'GET':
return render_template('index.html')
else:
filename = request.form['filename']
print('opening file') #change from console print to webpage
df = pandas.read_excel(filename)
print('File read.. processing data\n') #change from console to webpage
processData()
print('connecting to db....\n') #change to webpage print
db.connect()
print('connected to db! inserting rows') #change to webpage print
bulk_inserts = rows/500
for i in tqdm(range(bulk_inserts)): #wrapping tqdm around range makes a progress bar
insert500rows()
db.commit()
db.disconnect()
return 'Complete. ' + str(rows) + ' inserted.' #this gets sent as a post to the page
app.run()
我知道您只能发送一个回复请求,但是如果我只能发送一个回复,该如何给流程提供用户状态?也许我会采用错误的方式,但是我认为这是一个非常普遍的用例。如果这种方式行不通,我还应该怎么设置呢?
由于某种原因,标记为该问题的重复项。该问题询问如何将连续的值流打印到屏幕上。在这里,我要问的是如何在某些执行点发送消息。我认为所提供的有关Flask-socketio的评论提供了针对不同问题的不同方法。
明月笑刀无情
PIPIONE
相关分类