1

Google App Engineの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からインポートされます)。ルート.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 がリクエストの読み込みに与える余分な寛大さの恩恵を受けません (ログを確認してください)。ロード要求と見なされるもの)。

特に、最初にすべてのモデル クラスをインポートしないと、「種類 'X' のモデル クラスが見つかりません」というエラーが発生するリスクがあります。

于 2012-05-23T14:52:12.477 に答える