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
感谢您的答案@alpeware! VCS聪明我alwyas gitignore我的数据文件!在python中,你将如何“在最高层解析它,并将其有效地视为一个常量”。 – jiachen
// @甲辰没问题。我用一个具体的例子更新了答案。如果您仍然有疑问,请告诉我。 – alpeware
感谢您的例子!这是否意味着JSON被解析并加载了每个进入的HTTP请求? – jiachen