【问题标题】:APP-ENGINE load data from static json file or load data into the datastore?APP-ENGINE 从静态 json 文件加载数据还是将数据加载到数据存储区?
【发布时间】:2017-05-09 15:34:41
【问题描述】:

我是应用引擎的新手。写一个rest api。想知道以前有没有人遇到过这种困境?

我拥有的这些数据并不多(3 到 4 页),但每年都在变化。

方案一:将数据写成json,每次请求进来都解析json文件。

选项 2:建模为对象并放入数据存储区,然后在请求进入时检索它们。

有没有人知道每种方法的优缺点或任何更好的解决方案(如果有)。

【问题讨论】:

    标签: json google-app-engine google-cloud-datastore app-engine-ndb google-app-engine-python


    【解决方案1】:

    答案当然是视情况而定。

    这是我在做决定时会问自己的一些问题 -

    • 是否要根据代码推送对数据进行更改?
    • 数据中是否存在不应签入 VCS 的敏感信息
    • 系统的哪些其他部分依赖于这些数据
    • 您对数据的假设在更新频率和大小方面发生变化的可能性有多大

    假设数据很小 (

    您不必解析每个请求的数据,但您可以在顶层解析一次并有效地将其视为常量。

    类似的东西-

    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

    例如。在main.py

    from config import JSON_DATA
    
    # do something w/ JSON_DATA
    

    【讨论】:

    • 感谢@alpeware 的回答! VCS 明智的我总是 gitignore 我的数据文件!在 python 中,如何“在顶层解析一次并有效地将其视为常量。”?
    • @jiachen 没问题。我用一个具体的例子更新了答案。如果您仍有疑问,请告诉我。
    • 谢谢你的例子!!这是否意味着每个传入的 HTTP 请求都会解析和加载 JSON?
    • 没有。假设您将其放在顶部或单独的模块中,则仅当您的代码第一次加载时才会对其进行解析。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多