# 紅綠燈模擬管理系統: 串接Flask + PostgreSQL + Redis ## 介紹 * 利用Flask作為服務窗口,被動接收請求,即時提供紅綠燈設備相關資訊 * 靈感來自前公司的路燈管理系統建置專案(未實際上線) ## 使用工具、版本 * Flask * PostgreSQL * Redis * Heroku * 詳見[Requirement](https://github.com/kuochuwon/Trafficlight_demo/blob/master/requirements.txt) ## 程式架構 * [Github原始碼](https://github.com/kuochuwon/Trafficlight_demo) * [範例影片](https://imgur.com/v6L2qZs) * 簡易架構圖 * ![architecture](https://imgur.com/NzHvkLN.jpg) ## 原理概述 * 這個網頁服務以Flask服務為基礎,透過PostgreSQL存取所有業務相關的基本資料、動態資料;當有存取頻率高的資料,會透過Redis協助;並提供以下服務: * 使用者相關 * 創建使用者、使用者群組 * 登出、登入 * 紅綠燈相關 * 查詢設備清單 * 查詢設備詳細資料 * 查詢設備群組 * 建立或修改排程(可調整紅燈秒數) * 有關使用**Redis**與否的效能差異 * 資料結構: (id, name, display_name..., wgs_x, wgsy),一筆資料共23個欄位 * 使用Redis * **10000筆資料**:828, 823, 831, 848, 797 ms (使用Postman) * **100000筆資料**: 1.4, 1.54, 1.56, 1.51, 1.55 sec (資料過大無法使用Postman, 純計算在本機的資料獲取時間) * 不使用Redis * **10000筆資料**:987, 1179, 973, 1027, 960 ms (使用Postman) * **100000筆資料**: 2.67, 2.35, 2.3, 2.35, 2,38 sec (資料過大無法使用Postman, 純計算在本機的資料獲取時間) ## 參考資料、連結 * [freecodecamp](https://www.freecodecamp.org/news/structuring-a-flask-restplus-web-service-for-production-builds-c2ec676de563/) ###### tags: `Backend` `python`