Sử dụng chế độ xem Bình để tiếp tục đọc từ tệp vĩnh viễn và truyền trực tuyến phản hồi. Sử dụng JavaScript để đọc từ luồng và cập nhật trang. Ví dụ này gửi toàn bộ tập tin, bạn có thể muốn cắt ngắn tại một số điểm để tiết kiệm băng thông và bộ nhớ. Ví dụ này ngủ giữa các lần đọc để giảm tải CPU từ vòng lặp vô tận và cho phép các chủ đề khác hoạt động nhiều hơn.
from time import sleep
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/stream')
def stream():
def generate():
with open('job.log') as f:
while True:
yield f.read()
sleep(1)
return app.response_class(generate(), mimetype='text/plain')
app.run()
<pre id="output"></pre>
<script>
var output = document.getElementById('output');
var xhr = new XMLHttpRequest();
xhr.open('GET', '{{ url_for('stream') }}');
xhr.send();
setInterval(function() {
output.textContent = xhr.responseText;
}, 1000);
</script>
này là gần như giống như this answer, trong đó mô tả làm thế nào để dòng và phân tích các thông điệp, mặc dù đọc từ một tập tin bên ngoài mãi mãi là cuốn tiểu thuyết đủ để có câu trả lời riêng của nó. Mã ở đây đơn giản hơn vì chúng tôi không quan tâm đến việc phân tích cú pháp thư hoặc kết thúc luồng, chỉ cần chỉnh sửa tệp vĩnh viễn.
Tôi đã thử sử dụng nhưng bình không tải được trang html và hiển thị nội dung của trang khác trong khu vực đó (thay vì/Syslog) nó đi vào/Syslog/# preload và không thành công) –
Bây giờ, khi tôi mở trang html một mình (không phải với bình) nó cho thấy "một plugin là cần thiết để hiển thị nội dung này" –
+ Sử dụng