Я пытаюсь отследить некоторые проблемы с производительностью, которые у меня были с Django. Кажется, что с момента нажатия кнопки «Обновить» до момента получения ответа браузером происходит задержка в 600–800 мс.
Я настроил простое представление и промежуточное ПО профиля, и это представление и результаты:
функция просмотра:
def test(request):
return HttpResponse("It works")
Результаты профиля (я использовал http://www.djangosnippets.org/snippets/186/):
9 function calls in 0.000 CPU seconds
Ordered by: internal time, call count
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py:487(__init__)
1 0.000 0.000 0.000 0.000 /home/mysite/mysite/mysite/map/views.py:19(test)
1 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py:532(__setitem__)
3 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py:517(_convert_to_ascii)
2 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/utils/functional.py:274(__getattr__)
1 0.000 0.000 0.000 0.000 /usr/lib/python2.6/Cookie.py:573(__init__)
0 0.000 0.000 profile:0(profiler)
---- By file ----
tottime
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/utils/functional.py
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py
0.0% 0.000 /usr/lib/python2.6/Cookie.py
0.0% 0.000 /home/mysite/mysite/mysite/map/views.py
---- By group ---
tottime
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/utils
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http
0.0% 0.000 /usr/lib/python2.6
0.0% 0.000 /home/mysite/mysite/mysite/map
Итак, профилировщик не возвращает никаких чисел, однако Chrome сообщает о задержке в 647 мс от запроса ресурса до фактического получения какого-либо ответа. Мое время проверки связи с сервером составляет около 50 мс. Любые идеи, как мне улучшить профилирование, чтобы я мог видеть, где в Django это замедление вызвано?
Мой конфиг WSGI. Я использую Чероки с Уссги.
import os
import sys
path = '/home/mysite/mysite/mysite/'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Я вижу эту задержку (в течение 20 мс) на разных компьютерах, а также в разных сетях. Я также вижу это, когда просто использую manage.py runserver.