首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript 'setTimeout‘函数在Flask web服务器上运行6分钟后停止运行

javascript 'setTimeout‘函数在Flask web服务器上运行6分钟后停止运行
EN

Stack Overflow用户
提问于 2017-01-28 02:12:13
回答 1查看 268关注 0票数 0

*编辑:我在芹菜任务中发现了一个bug,导致了这个问题。所以这和那段JavaScript代码无关。建议结束此问题。

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

如果芹菜任务在6分钟内完成,则运行良好。然而,当它达到6分钟时,这个函数就会停止运行。芹菜任务的状态再也没有更新过,即使我确定该任务仍然在后台运行,我也没有收到来自Javascript的任何结果。

是Flask的超时设置吗?任何真知灼见都将不胜感激。

代码语言:javascript
复制
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);
        }
    });
}
EN

回答 1

Stack Overflow用户

发布于 2017-01-28 03:10:51

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

代码语言:javascript
复制
const updateInterval = setInterval(function(){
 update_progress(status_url);
},2000);

update_progress函数中,删除else部件并添加clearInterval(updateInterval)

代码语言:javascript
复制
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']);
    }
});

}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41900422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档