*编辑:我发现 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']);
}
});
}
关于javascript 'setTimeout' 函数在 Flask Web 服务器上运行 6 分钟后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900422/