Я хочу, чтобы приложение google app engine appappapp для приложения google появилось как можно быстрее (создайте новый экземпляр приложения). Мне было интересно, какие очевидные замедления я должен следить (я знаю .. преждевременная оптимизация, но я не хочу делать массивный рефактор в конце, если я могу помочь)как импортировать модели и обработчики в webapp2, чтобы обеспечить быстрый запуск нового экземпляра приложения.
У меня есть папка иерархия похожа на это:
-root_folder
__init__.py
main.py
config.py
routes.py
models.py
gviz_api.py
... 20 more .py files
-web_folder
__init__.py
some_handlers.py
more_handlers.py
20 more.py files
..
-data_model_folder
__init__.py
some_models.py
more_ndb_models.py
10 more model files
-many more folders e.g. templates, simpleauth etc.
в main.py, я создаю экземпляр приложения с помощью маршрутизатора (маршрутизатор импортируется из routes.py). routes.py импортирует каждый обработчик (назначая каждому маршруту обработчик). Каждый обработчик импортирует почти каждый datamodel. Означает ли это, что мое приложение очень медленно создает новый экземпляр приложения?
Я ожидаю, что к концу моего проекта будет около 100 обработчиков и 30 моделей данных, хотя многие из них будут редко использоваться.
импортировать модель данных (из внутри some_handlers.py)
просто следующий достаточно быстро:
from root_folder.data_model_folder.more_ndb_models import special_model
Должен ли я смотреть использовать конфигурационный/реестр?
Это вне меня, как «класс модели не найден для добрых« X », может возникнуть - я не буду использовать ленивый импорт. Все, что вы упомянули, было очень полезно. –
Также, под «большими каркасами», вы имеете в виду любой из них, включенных в движок приложения? например numpy и т. д. –
«Класс модели, найденный для вида« X », может возникнуть, если вы получите закодированный ключ от пользователя и извлечете его из хранилища данных. Если тип ключа - X, но модуль, определяющий класс X, еще не импортирован, вы получаете эту ошибку, потому что для кода клиента должен быть класс X, чтобы построить результат. В больших рамках я в основном имел в виду Django; хотя и учитывается весь механизм приложения. :-) –