Я пытаюсь создать сигнал на веб-странице и отобразить зеленый или красный цвет на основе значений, извлеченных из базы данных. Но когда я отправляю запрос через 10 секунд, страница кажется зависшей и не отвечает. Я не могу определить, в чем проблема, пожалуйста, помогите мне решить эту проблему.
Использование Techstack - HTML, CSS, Js, Ajax, Python (Flask) и PostgreSQL
function healthstatus(){
var header = document.getElementById("circle");
var tbid = $('#multipletestbench').val();
var signal = $.ajax({
type: 'POST',
url: '/healthstatus?tbid='+tbid,
data: "",
contentType: false,
dataType: "json",
async:false,
cache: false,
processData: false,
success: function(data) {
},
//error: function(data) {
// alert("Data Not received !!");
//},
complete: function(data){
setTimeout(healthstatus, 10000);
}
});
var signaldata = JSON.parse(signal.responseText);
var signalvalue = signaldata[0].signalvalue;
var datevalue = signaldata[0].date;
if(signalvalue == '1')
{
header.style.background = "green";
}
else
{
header.style.background = "red";
}
};
setTimeout(healthstatus, 10000);
Flask Код:
from flask import Flask, redirect, url_for, request, render_template
from werkzeug.utils import secure_filename
from flask import jsonify
import json
from collections import OrderedDict
import psycopg2
app = Flask(__name__)
@app.route('/healthstatus', methods = ['POST', 'GET'])
def health_status():
tbid = request.args['tbid']
if request.method == 'POST':
connection = psycopg2.connect(user = "postgres", password = "abcd",host = "localhost",port = "5432", database="mydb")
cursor = connection.cursor()
sql1 = "Select * from health_status_vw where tb_id = %s"
record_to_update = (tbid,)
cursor.execute(sql1,record_to_update)
record = cursor.fetchall()
health_arr = []
for i in record:
hs = OrderedDict()
hs["signalvalue"] = i[0]
hs["date"] = i[1]
hs["tbid"] = i[2]
health_arr.append(hs)
json_date = json.dumps(health_arr, default = str)
return json_date
if __name__ == '__main__':
app.run(debug = True)