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

标签 javascript flask celery

*编辑:我发现 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/

相关文章:

javascript - 如何安排 javascript 对象以获得更好的性能

javascript - 使用 iframe 来提高页面性能是否是一种可接受的方法?

flask - psutil 的 cpu_percent 始终返回 0.0

python - 如何在 2 个不同的 app.route 中使用 Flask Flash 消息

redis - Celery:使用 Redis 作为 result_backend,使用 RabbitMQ 作为消息代理

javascript - Bootstrap 3 Datepicker v4 : dp. show 和 dp.change 事件不会在 datepicker 内联时触发

javascript - 在 Angular 中创建资源

python - VS代码: How to debug Flask app that uses Connexion?

python - 1970 年具有 time_start 属性的 Celery 任务

django - Heroku 上的 Redis 连接被拒绝