1

我希望我的谷歌应用引擎 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 导入每个处理程序(为每个路由分配一个处理程序)。每个处理程序都会导入几乎所有数据模型。这是否意味着我的应用程序创建新应用程序实例的速度很慢?

我预计到我的项目结束时会有大约 100 个处理程序和 30 个数据模型,尽管其中许多将很少使用。

导入数据模型(从 some_handlers.py 内部)

以下内容是否足够快:

from root_folder.data_model_folder.more_ndb_models import special_model

我应该寻找使用配置/注册表吗?

4

2 回答 2

3

Webapp2 支持延迟导入的处理程序

于 2012-05-22T23:22:04.107 回答
2

通常,减速是由于导入大型框架,而不是大量的应用程序代码。所以我不会太担心这个,即使你有 100 个 .py 文件。(相信我,100 并没有那么多......)我也会研究热身请求。

我不是惰性导入技巧的忠实拥护者——它们会在极端情况下导致复杂的故障模式(即难以调试),并且它们不会从 App Engine 对加载请求的额外宽松中受益(检查您的日志以了解它认为是加载请求)。

特别是,如果您在开始时没有导入所有模型类,则可能会出现“No model class found for kind 'X'”错误的风险。

于 2012-05-23T14:52:12.477 回答