私の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の両方で)繰り返す必要があるため、複雑になります。 )。