3

私のPythonGAEアプリの中央アプリケーションファイルは次のようになります。

import webapp2
import homepage
import user_auth
import user_confirm
import admin_user
import admin_config
import config

app = webapp2.WSGIApplication([
                                (user_auth.get_login_url(), user_auth.LoginHandler),
                                (user_auth.get_logout_url(), user_auth.LogoutHandler),
                                ("/user/confirm", user_confirm.UserConfirmHandler),
                                ("/admin/config", admin_config.AdminConfigHandler),
                                ("/admin/user/add", admin_user.AdminAddUserHandler),
                                ("/admin/user", admin_user.AdminUserHandler),
                                ("/", homepage.HomepageHandler),
                            ], debug=True)

ご覧のとおり、多数のリクエストハンドラーをインポートする必要がありますが、リクエストごとに1つだけが使用され、他のインポートは役に立たないだけです。
これらの不要なインポートは他のものも独自にインポートするため、これはメモリとパフォーマンスの大きな浪費です。Google App Engineには、これらの不要なインポートを無視できるようにする「キャッシュ」メカニズムなどがありますか?私はそうは思わない。

どうすればそれらを回避できますか?リクエストごとに1つのリクエストハンドラーをインポートする方法がわかりません。すべてのルーティングをapp.yamlに配置すると、希望どおりに機能しますが、app = webapp2.WSGIApplication(...すべてのリクエストハンドラーファイルに書き込み、それらの退屈なURLを2回(pythonファイルとapp.yamlの両方で)繰り返す必要があるため、複雑になります。 )。

4

1 に答える 1

3

ここで方法を見つけました。すでに webapp2 http://webapp-improved.appspot.com/guide/routing.html#lazy-handlersに組み込まれてい ます

于 2012-06-05T03:04:56.367 に答える