1

即時通訊應用引擎新功能。編寫一個休息API。想知道是否有人在這個困境之前?APP-ENGINE從靜態json文件加載數據或將數據加載到數據存儲區?

這個數據我不是很多(3到4頁),但它每年都在變化。

選項1:寫數據作爲JSON和每一個請求到來時解析JSON文件

選項2:型號爲對象,並投入到數據存儲,然後檢索他們時,一個請求進來

有沒有人知道這種方法或任何更好的解決方案,如果有的每個優點和缺點。

回答

2

當然,答案取決於它。

下面是一些我會問自己做出決定的問題 -

  • 做你想依賴代碼更改推送到該數據?
  • 是那裏不應該在被檢查的VCS數據的敏感信息
  • 什麼其他部分系統的依賴於這個數據
  • 怎麼可能是你的有關數據將在條款變化的假設更新和大小

假設數據的頻率較小(< 1MB),而且在它沒有任何敏感信息,我開始了加載JSON文件,因爲它是最簡單的解決方案。

您不必解析每個請求上的數據,但可以在頂層解析它,並將其有效地視爲常量。

東西沿着這些路線 -

import os 
import json 

DATA_FILE = os.path.join(os.path.dirname(__file__), 'YOUR_DATA_FILE.json') 
with open(DATA_FILE, 'r') as dataFile: 
    JSON_DATA = json.loads(dataFile.read()) 

然後,您可以使用JSON_DATA就像在你的代碼字典。

awesome_data = JSON_DATA['data']['awesome'] 

如果您需要訪問多個地方的數據,你可以移動到這個自己的模塊(例如,config.py)和導入JSON_DATA無論你需要它。

Ex。在main.py

from config import JSON_DATA 

# do something w/ JSON_DATA 
+0

感謝您的答案@alpeware! VCS聰明我alwyas gitignore我的數據文件!在python中,你將如何「在最高層解析它,並將其有效地視爲一個常量」。 – jiachen

+0

// @甲辰沒問題。我用一個具體的例子更新了答案。如果您仍然有疑問,請告訴我。 – alpeware

+0

感謝您的例子!這是否意味着JSON被解析並加載了每個進入的HTTP請求? – jiachen