首頁 >web前端 >js教程 >如何從 Flask 視圖中有效地顯示即時串流資料?

如何從 Flask 視圖中有效地顯示即時串流資料?

Barbara Streisand
Barbara Streisand原創
2024-12-05 10:26:101051瀏覽

How to Effectively Display Real-time Streamed Data from a Flask View?

如何從 Flask 視圖顯示串流資料

Web 開發中的常見任務是顯示即時產生的資料。這些數據可以來自多種來源,例如資料庫、感測器或機器學習模型。

在 Flask 中,您可以使用yield 關鍵字從檢視中串流資料。這允許您將資料分塊發送到客戶端,而不是等待產生整個回應。這對於顯示太大而無法放入記憶體的資料或顯示不斷變化的資料很有用。

但是,串流資料的一個挑戰是您無法動態更新 HTML 模板,因為資料已傳送。模板在伺服器端渲染一次,然後發送到客戶端。這意味著您無法使用 JavaScript 即時更新模板。

解決此問題的主要方法有兩種:

  1. 使用 JavaScript 讀取串流回應並在客戶端輸出資料。這會帶來複雜性,但它允許直接更新頁面並完全控制輸出的外觀。
  2. 使用 iframe 來顯示串流 HTML 輸出。這是一個更簡單的解決方案,但它有一些缺點。 iframe是一個單獨的文檔,增加了資源佔用。由於它僅顯示串流數據,因此將其樣式設為頁面其他部分的樣式可能並不容易。它只能附加數據,因此長輸出將呈現在可見滾動區域下方。它無法修改頁面的其他部分來回應每個事件。

以下是如何實現這兩個解決方案的一些範例:

使用JavaScript 更新直接頁面

<script>
    var xhr = new XMLHttpRequest();
    xhr.open('GET', '/stream');
    xhr.send();
    xhr.onload = function() {
        if (xhr.status === 200) {
            var data = xhr.responseText;
            // Update the page with the new data
        }
    };
</script>

使用iframe 顯示流式HTML輸出

<iframe src="/stream"></iframe>

最適合您的解決方案將取決於您的特定要求。如果您需要直接更新頁面並完全控制輸出,那麼使用 JavaScript 是最好的選擇。如果您需要更簡單的解決方案或不需要直接更新頁面,那麼使用 iframe 是一個不錯的選擇。

以上是如何從 Flask 視圖中有效地顯示即時串流資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn