python - 如何连接到 Flask 的文件更改检测?

标签 python flask

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

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

JavaScript 很简单,但是编写文件轮询似乎并不简单,而且可能非常消耗资源。由于 Flask 服务器在 Debug模式下内置了这个确切的功能,我想知道是否有某种方法可以轮询它上次重新启动的时间。

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

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

最佳答案

由于 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);

关于python - 如何连接到 Flask 的文件更改检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955901/

相关文章:

javascript - 破坏 Chrome 缓存以进行浏览器同步重新加载

python - coinbase-api python 库入门

python - 如何获取 Python 数据框中的下一行值?

python - 在没有 Flask 上下文的情况下渲染 jinja2 模板

flask - 如何在 Flask-SQLAlchemy 中声明基本模型类?

python - 如何从Flask应用程序连接到AWS上的远程Elasticsearch集群?

javascript - 如何使用 Flask 和 jquery 解决这个问题? HTTP400 : BAD REQUEST - The request could not be processed by the server due to invalid syntax

python - 如何在 Python 中将后端推送队列中创建的 Channel API token 发送到前端?

python - 取一个数字列表,获取python前的三个数字

python - 如何将解码后的数据矩阵写入数据帧