簡體   English   中英

從數據庫中檢索最新數據並將其呈現在網站上的最佳實踐

[英]Best practices for retrieving the most recent data from a database and presenting it on a website

我的項目中有以下堆棧:

項目結構

Cronjobs 每 15 分鍾運行一次,以使用來自 API 的數據填充 MySQL 數據庫。 同時,flask 應用程序呈現此日期。 因此,每次用戶訪問網站時,都會加載包含大量數據的表。 向數據庫發出請求以加載數據。 數據將作為響應顯示在引導表中。

我希望用戶能夠刷新表數據(通過單擊refresh按鈕)並始終查看最新數據(而不必等待 cronjob 重新啟動和更新數據庫)。 如果每次用戶點擊refresh按鈕時,我再次觸發從API導入數據,該操作將非常耗時,並且整個數據將加載幾分鍾才能再次顯示頁面。 刷新從數據庫加載的表數據的最佳方法是什么?

這個問題可以通過支持鎖定的任務隊列輕松解決,例如huey (如果你想要一些簡單的東西)。

讓我們調用獲取 API 並更新本地數據庫的任務: fetch_api() 它可以由 cron 或用戶運行。

  1. 當它運行時,首先它會獲取一個特定的 ,這意味着只有一個fetch_api()任務實例可以並發運行。
  2. 接下來是檢查上次成功運行任務並更新本地數據庫的時間。 如果它在給定的時間間隔內,例如距離上次導入 1 分鍾,那么它會跳過,因為數據可以被視為“新鮮”的,因此無需再次更新。
  3. 否則,它將啟動導入過程並更新本地數據庫。
  4. 最后它發出一個信號,表示新數據准備就緒。
  5. 客戶端通過輪詢或 websocket 檢測信號並獲取新的渲染表。

這樣,當用戶點擊刷新按鈕時,一個fetch_api()任務就可以入隊,任務運行器將處理 rest。 關鍵是鎖定,因此只有一個任務會獲取 API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM