Google App Engine으로 이식하기로 결정한 Django 애플리케이션이 있습니다.
데이터베이스로 NDB를 사용하기로 결정하고 모든 모델 (django 사용자 포함)을 포팅했습니다. 문서를 통해 1 주일을 읽은 후 (App Engine 설명서는 끔찍하며 주어진 예는 종종 오래되어 더 이상 작동하지 않습니다) 응용 프로그램을 포팅 한 후 실행했을 때 정말 느려졌습니다 : 1s-2s 대기 시간 데이터 베이스.
ndb 쿼리에 시간이 오래 걸리지 않고 (50ms 미만) 애플리케이션에 아무 것도 표시되지 않습니다. 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)
어떻게 몸에 프로파일 통계를 추가 할 수 있습니까?
내 응용 프로그램의 속도를 줄이는 방법을 찾으려면 더 좋은 방법이 있습니까?
장고보기에서 많은 모듈 가져 오기를 사용하고 있는데 모듈을 가져 오는 App Engine 방식이 있습니까?
장고 URL 및보기를 정리하고 하나의보기 만 Hello World 메시지로 남겨 둡니다.이 메시지는 500-1s 대기 시간을 갖습니다. 이는 안녕하세요 세계 메시지의 경우 많이 있습니다. – andrei