スレッドを作成していて、そのスレッドが終了した後、ユーザーページを更新して別のページに送信したいと考えています。しかし、私はPythonとフラスコには本当に新しいので、私はそれを行う方法がわかりません。ユーザーのウェブページをPython /フラスコでリフレッシュする
これは、これまでの私のコードです:
nit = Thread()
def stampa():
print ("Starting")
com = "python plan.py"
proc = subprocess.Popen(com.split(),shell=False)
if proc.wait()!=0:
print ("Ne radi")
else:
print ("Radi")
return redirect('ended')
@app.route('/', methods=['GET','POST'])
def home():
return render_template("homepage.html")
@app.route('/start_thread', methods=['GET','POST'])
def start_thread():
global nit
nit = Thread(target = stampa)
nit.start()
return redirect('end')
@app.route('/end', methods=['GET','POST'])
def end():
global nit
if nit.is_alive():
return "Still working"
else:
return redirect('ended')
@app.route('/ended', methods=['GET','POST'])
def ended():
return "It has ended"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
ホームページテンプレートはstart_thread
にリダイレクトするだけで1ボタンがあります。 スレッドを開始する理由は、プログラムの実行中にウィンドウがフリーズしないようにするためです(完了までに約5分かかります)。今のところ、ユーザーはページを手動で更新してプロセスが終了したかどうかを確認する必要がありますが、自分でそれを実行できるようにしたいと考えています。 誰かが解決策を持っていますか? (それとも私が調査することができます任意のアイデア?)
に
を試してみてくださいで。クライアントが要求したことなくサーバーがクライアントにコンテンツを「プッシュ」できないことを知っている限り、フロントエンドにはjavascriptが必要です。あなたは 'setInterval()' javascript関数を使って、進行のためにフラスコエンドポイントを定期的にチェックすることができます。 – abigperson