JavaScript 'setTimeout'函数在 Flask Web 服务器上运行 6 分钟后停止运行



*edit:我在Celery任务中发现了一个错误,导致了这个问题。因此,这与那段JavaScript代码的漏洞无关。建议结束此问题。

我在Flask web服务器上运行了这个Javascript函数,它检查Celery任务的状态。如果任务完成,请console.log其结果,否则在2秒钟后重新检查。

如果Celery任务在6分钟内完成,它运行良好。然而,当它达到6分钟大关时,该功能就会停止运行。Celery任务的状态再也没有更新,尽管我确信该任务仍在后台运行,但我没有从Javascript收到任何结果。

这是Flask的超时设置吗?任何见解都将不胜感激。

function update_progress(status_url) {
// send GET request to status URL
$.getJSON(status_url, function(data) {
if (data['state'] != 'PROGRESS') {
if ('result' in data) {
console.log(data['result']);
}
else {
// something unexpected happened
console.log(data['state']);
}
}
else {
// rerun in 2 seconds
setTimeout(function() {
update_progress(status_url);
}, 2000);
}
});
}

您可以尝试使用setInterval,将其注册到变量中。

const updateInterval = setInterval(function(){
update_progress(status_url);
},2000);

update_progress函数内部,删除else部分并添加clearInterval(updateInterval):

function update_progress(status_url) {
// send GET request to status URL
$.getJSON(status_url, function(data) {
if (data['state'] == 'PROGRESS') {
return;
}
clearInterval(updateInterval);
if ('result' in data) {
console.log(data['result']);
}
else {
// something unexpected happened
console.log(data['state']);
}
});

}

最新更新