GoogleAppEngineに移植することにしたDjangoアプリケーションがあります。
データベースとしてNDBを使用することにし、すべてのモデル(djangoユーザーを含む)を移植しました。ドキュメントを1週間読んだ後(App Engineのドキュメントはひどいです、与えられた例はしばしば時代遅れで、もう機能しません)、アプリケーションを移植した後、私がそれを実行したとき、それは本当に遅かった:空の1秒から2秒の待ち時間データベース。
ndbクエリはそれほど時間はかからず(50ミリ秒未満)、Appstatsアプリケーションは他に何も表示しません。cProfile
を使用することにしましたwsgiミドルウェアを作成しましたが、出力を印刷する方法がわかりません。pstatsが提供するメソッドは、出力を出力するかファイルに保存するかのいずれかであり、wsgiハンドラー内では何もできません。
私のコードは次のとおりです。
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
from django.core.handlers import wsgi
from webob import Request
class AppProfiler(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
from django.core.files.base import ContentFile
self.req = Request(environ)
import cProfile, pstats
prof = cProfile.Profile()
prof = prof.runctx("self.get_resp()", globals(), locals())
print "<pre>"
stats = pstats.Stats(prof)
#stats.dump_stats(output)
stats.print_stats(80)
print "</pre>"
body = self.resp.body # here i should append the stats data
self.resp.body = body
return self.resp(environ, start_response)
def get_resp(self):
self.resp = self.req.get_response(self.app)
app = wsgi.WSGIHandler()
profiler = AppProfiler(app)
プロファイラー統計を本文に追加するにはどうすればよいですか?
または、アプリケーションの速度を低下させている原因を見つけるためのより良い方法はありますか?
djangoビューで多くのモジュールインポートを使用していますモジュールをインポートするAppEngineの方法はありますか?