Sto provando a eseguire il polling lungo con JQuery e Python sotto il framework Flask.Polling lungo in Python con Flask
aver fatto polling lungo prima che in PHP, ho cercato di andare su di esso nello stesso modo:
Uno script/funzione che ha un while (true) loop, la verifica per le modifiche periodicamente eg.every 0 , 5 secondi nel database e restituisce alcuni dati quando si verifica una modifica.
Quindi nel mio ini .py Ho creato un'app.route a/poll per JQuery da chiamare. JQuery fornisce alcune informazioni sullo stato corrente del client e la funzione poll() confronta questo con ciò che è attualmente nel database. Il ciclo termina e restituisce informazioni quando si osserva un cambiamento.
Ecco il codice Python:
@app.route('/poll')
def poll():
client_state = request.args.get("state")
#remove html encoding + whitesapce from client state
html_parser = HTMLParser.HTMLParser()
client_state = html_parser.unescape(client_state)
client_state = "".join(client_state.split())
#poll the database
while True:
time.sleep(0.5)
data = get_data()
json_state = to_json(data)
json_state = "".join(data) #remove whitespace
if json_state != client_state:
return "CHANGE"
Il problema è che, quando il codice precedente inizia il polling, il server sembra essere sovraccaricato e altre chiamate Ajax, e altre richieste, come il caricamento di un'immagine "carico" per l'html che utilizza JQuery non risponde e non funziona.
Per l'amor di completamento Ho incluso il JQuery qui:
function poll() {
queryString = "state="+JSON.stringify(currentState);
$.ajax({
url:"/poll",
data: queryString,
timeout: 60000,
success: function(data) {
console.log(data);
if(currentState == null) {
currentState = JSON.parse(data);
}
else {
console.log("A change has occurred");
}
poll();
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR.status + "," + textStatus + ", " + errorThrown);
poll();
}
});
}
Questo bisogno di multi-threaded o qualcosa del genere? O qualcuno ha qualche idea del perché sto vivendo questo comportamento?
Grazie in anticipo !! :)
Vedere http://stackoverflow.com/questions/14814201/can-i-servi-multiple-clients-using-just-flask-app-run-as-standalone –