APP-ENGINE从静态json文件加载数据或将数据加载到数据存储区?

问题描述:

即时通讯应用引擎新功能。编写一个休息API。想知道是否有人在这个困境之前?APP-ENGINE从静态json文件加载数据或将数据加载到数据存储区?

这个数据我不是很多(3到4页),但它每年都在变化。

选项1:写数据作为JSON和每一个请求到来时解析JSON文件

选项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