我是 Python Flask 新手,需要一些有关如何将 Signals
与 Flask
结合使用的信息/基本知识。
目前我的理解:
我可以创建并发送自己的信号。我可以使用这个信号来进行函数调用。
我的 Flask 应用程序看起来像这样:
@app.route("/")
def start():
return render_template('index.html')
@app.route("/search")
def search():
rThread = threading.Thread(target=getTags)
rThread.start()
return redirect(url_for('search'))
rThread 中的 getTags
在应用程序之外执行一些操作。
但基本上它看起来像这样:
def getTags():
#do something#
#now its finished#
我想在 getTags 完成时发送一个信号,并且 Flask
应用程序应该获取此信号并重定向到 index.html。
我一直在创建信号,但我不知道如何发送信号以及如何告诉 Flask 应用程序在发送信号时重定向到 index.html。
感谢您的帮助和建议。
编辑:为了澄清,用户可以访问更多页面。
@app.route("/details")
def det():
#do stuff
return render_template('details.html')
@app.route("/admin")
def adm():
if request.method == "GET":
#do Stuff
return redirect(url_for('search'))
else
#do Stuff
return render_template("admin.html")
最佳答案
如果您只想等待函数完成其工作,您可以简单地调用该函数,然后在其后响应。您使用了 threading.thread
,因此您可以使用 threading.Event
并等待函数设置事件:
from flask import Flask, render_template, url_for, redirect
from threading import Thread, Event
from time import sleep
app = Flask(__name__)
event = Event()
@app.route("/")
def start():
render_template('index.html')
@app.route("/search")
def search():
rThread = Thread(target=getTags)
rThread.start()
event.wait()
event.clear()
return redirect(url_for('start'))
def getTags():
print("doing some processing things")
sleep(5)
print("done")
event.set()
if __name__ == "__main__":
event.clear()
app.run(host="localhost", port="8080", debug=True)
关于python - 在将 Signals 与 Python Flask 结合使用方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644416/