フラスコとjQueryを使用して動的に結果を取り込むことを検討しています。Flaskでバックエンドを実行するときにhtmlを動的に設定する
バックエンド関数で長い一連のタスクを実行するプログラムがあり、その結果をリストに追加します。バックエンドの実行が終了するまで(例:Travelocityのようなウェブサイトが、それが見つかるたびに動的にページに飛行を追加する方法)、結果をページに動的に追加する方法がありますか?現在のところ、バックエンドが実行中(結果が返される前に完了するまで待つ)にajaxを使用して結果を更新する方法を理解できません。
私の仮定の例:
$.ajax({
url: '/test',
type: 'post',
data: 'Begin Running Backend',
dataType: 'json',
success: function(data) {
while(**BACKEND IS RUNNING**){
$("#samplediv").text(data.current_results);
}
},
error: function(data) {
console.log("FAILED");
}
});
バックエンドにある間:
@app.route("/test",methods=['GET','POST'])
def test():
run_script() #In this script, a for loop is adding results to a list
return jsonify(results=list)
基本的には、自分のやり方を変える必要があります。 Webソケットに入ることなく、HTTP要求の応答サイクルは1回限りの処理です。サーバーは1回の要求に対して1回だけ応答します。だから、何かを連続的に(ウェブソケットなしで)更新するには、サーバーからの結果を要求するものを書いてから、サーバーが「要求開始」信号のように送り返し、クライアントが定期的にサーバーに結果を問い合わせますこれまで収集された要求のうちの1つになるまで、サーバーは「これ以上の結果」信号を出さない。 TravelocityはおそらくWebソケットを使用します。 – bryan60