我目前正在尝试找出如何解决使最终用户可以访问大文件的问题,使用 Flask 作为前端引擎。
为了更好地解释,这是我必须做的(并且做了):
我的问题是了解我可以使用哪些工具来显示 Flask 模板中的数据,并考虑到数据可能会发生变化(附加到步骤 3 中已保存的日志列表中)。
基本解释:我尝试从某些文件中读取实时数据,并使其可供任何前端用户访问,而不为前端的每个会话创建“ssh -c tail -f logfile.log”。
如果需要避免 SSH 和 tail -f,可以使用 flask-socketio
from flask import Flask
from flask_socketio import SocketIO, emit
from time import sleep
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on('connect')
def stream_logs():
def generate_logs():
with open('file.log') as f:
while True:
line = f.readline()
if line:
emit('log_update', line)
else:
sleep(1) # Avoid busy waiting
socketio.start_background_task(generate_logs)
if __name__ == '__main__':
socketio.run(app)
<script src="//cdn.socket.io/4.0.0/socket.io.min.js"></script>
<div id="log"></div>
<script>
var socket = io();
socket.on('log_update', msg => {
document.getElementById('log').innerHTML += `<p>${msg}</p>`;
});
</script>
这应该是将大文件实时传输到前端的最有效的方式。