挂钩烧瓶的文件更改检测的方法?

时间:2019-05-02 15:39:15

标签: python flask

一个朋友一直在使用VSCode的实时服务器功能(他将其描述为每次保存文件时都强制刷新浏览器),听起来非常方便。

让我想到我可以写一些AJAX路由和随附的JavaScript代码段,仅在处于DEBUG模式时才包含在模板的基础中,该模式连续轮询应用程序中文件是否已更改,然后强制刷新浏览器。

JavaScript很简单,但是编写文件轮询似乎很简单,而且可能非常耗资源。由于Flask服务器在调试模式下具有内置的确切功能,因此我想知道是否有某种方法可以在上次重启时轮询 it

我正在考虑的一种解决方案是使用某种记录器,尽管我对日志记录不是很熟悉(当然,如果需要的话,我可以很熟悉)。

任何对此的建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

由于flask重新加载了完整的代码,所以您要做的就是在模块作用域中获取一个时间戳,并在Web进程启动时告诉您

# app/start_time.py
import time


server_start_time = time.time()

# ... in some view
    return jsonify({'start_time': server_start_time})

您的javascript心跳信号可以检索此端点,并且当其更改时刷新页面。也许像这样(未经测试)

var lastServerTime;

function checkTime() {
    fetch('/server-start-time')
        .then(function (response) {
            return response.json();
        })
        .then(function (json) {
            if (!lastServerTime) {
                lastServerTime = json.start_time;
            } else if (lastServerTime != json.start_time) {
                window.location.reload();
            }
        });
}

setInterval(checkTime, 1000);