一个朋友一直在使用VSCode的实时服务器功能(他将其描述为每次保存文件时都强制刷新浏览器),听起来非常方便。
让我想到我可以写一些AJAX路由和随附的JavaScript代码段,仅在处于DEBUG模式时才包含在模板的基础中,该模式连续轮询应用程序中文件是否已更改,然后强制刷新浏览器。
JavaScript很简单,但是编写文件轮询似乎很简单,而且可能非常耗资源。由于Flask服务器在调试模式下具有内置的确切功能,因此我想知道是否有某种方法可以在上次重启时轮询 it 。
我正在考虑的一种解决方案是使用某种记录器,尽管我对日志记录不是很熟悉(当然,如果需要的话,我可以很熟悉)。
任何对此的建议将不胜感激。
答案 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);