我有一個Django應用程序,我決定將它移植到Google App Engine。
我決定使用NDB作爲我的數據庫,並移植了所有模型(包括django用戶)。在閱讀文檔(App Engine文檔非常糟糕,給出的示例經常過時並且不再工作)和移植應用程序一週之後(當我運行它時,它非常慢):1s-2s延遲數據庫。
ndb查詢不需要太多時間(少於50毫秒),Appstats應用程序不會顯示任何其他內容。
我決定使用cProfile並創建了一個wsgi中間件,但我無法弄清楚如何打印輸出。方法pstats使我可以打印輸出或將其保存到文件中,並且我不能在wsgi處理程序中執行任何操作。
我的代碼如下:App Engine 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視圖中使用了很多模塊導入,有沒有App Engine的導入模塊的方式?
我已經清理了我的django網址和視圖,只留下了一個帶有Hello World消息的視圖,它有500-1s的延遲,對於hello world消息還是很多。 – andrei 2012-08-17 13:21:14