GAE (Python) Лучшая практика: загружать конфигурацию из файла JSON или хранилища данных?

#python #json #google-app-engine #google-cloud-datastore #urllib

# #python #json #google-app-engine #google-cloud-хранилище данных #urllib

Вопрос:

Я написал платформу на GAE Python с базой данных хранилища данных (с использованием NDB). Моя платформа позволяет пользователю выбирать тему. Перед каждой загрузкой страницы я загружаю в файл JSON (используя urllib.urlopen(FILEPATH).read() ). Должен ли я вместо этого сохранить JSON в хранилище данных и вместо этого загрузить его через NDB?

Вот пример моего файла конфигурации JSON. Они могут варьироваться по размеру, но не сильно. Обычно они очень маленькие.

 {
    "TITLE": "Test Theme",
    "VERSION": "1.0",
    "AUTHOR": "ThePloki",
    "DESCRIPTION": "A test theme for my platform",

    "FONTS": ["Arial", "Times New Roman"],

    "TOOLBAR": [
        {"left":[
            {"template":"logo"}
        ]},
        {"center":[
            {"template":"breadcrumbs"}
        ]},
        {"right":[
            {"template":"link", "url":"account", "msg":"Account"},
            {"template":"link", "url":"logout", "msg":"Log Out"}
        ]}
    ],

    "NAV_LEFT": true,
    "SHOW_PAGE_TITLE": false
}
 

В настоящее время я не замечаю никаких задержек, но я работаю локально. Во время производства могут urllib.urlopen().read() возникнуть проблемы при высоком трафике?

Ответ №1:

Вы ожидаете, что конфигурация изменится без повторного развертывания кода приложения? Это сценарий, в котором имело бы смысл сохранить конфигурацию в хранилище данных.

Если изменение конфигурации в любом случае связано с повторным развертыванием кода, локальный файл, вероятно, подойдет — вы даже можете подумать о том, чтобы сделать его файлом Python, а не JSON, чтобы просто импортировать его, а не возиться с дескрипторами файлов.

Комментарии:

1. Скорее всего, файл конфигурации будет обновлен во время повторного развертывания приложения. Вы правы, сделав его файлом python. Я считаю, что это лучший ответ на мой вопрос. Я приму это как ответ через 5 минут, когда это позволит мне. Спасибо.