Я пытаюсь сделать длинный опрос с помощью JQuery и Python под флягой Framework.Длинный опрос в Python с флягой
Сделав длинный опрос, прежде чем в PHP, я пытался это сделать таким же образом:
Сценарий/функция, которая имеет какое-то время (правда) цикл, проверка изменений периодически eg.every 0 , 5 секунд в базе данных и возвращает некоторые данные при изменении.
Итак, в моем ini .py Я создал app.route для/poll для вызова JQuery. JQuery дает ему некоторую информацию о текущем состоянии клиента, а функция poll() сравнивает это с тем, что в настоящее время находится в базе данных. Цикл завершается и возвращает информацию, когда наблюдается изменение.
Вот код питона:
@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"
Проблема заключается в том, что, когда над кодами начинают опрашивать сервер оказывается перегруженным и другие Ajax звонков, и другие запросы, такие как загрузки «загрузка» изображение в html, использующий JQuery, не отвечает и тайм-аут.
Ради ЗАВЕРШЕНИЕ, я уже включил JQuery здесь:
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();
}
});
}
ли эта потребность многопоточных или что-то? Или кто-нибудь знает, почему я испытываю такое поведение?
Спасибо заранее! :)
См. Http://stackoverflow.com/questions/14814201/can-i-serve-multiple-clients-using-just-flask-app-run-as-standalone –