Я запускаю Django 1.11.20.Я только что (наконец) совершил переход с Python 2.7 на 3.7.
Я заметил, что после обновления до Python 3 самая первая загрузка страницы после очистки кэша идет очень медленно.Пока у меня на компьютере разработчика только среда Python 3, поэтому я испытываю это при использовании ./manage.py runserver
и FileBasedCache
бэкэнда.Я не знаю, буду ли я испытывать то же самое в производственном стеке (nginx, uwsgi, redis и т. Д.).
Я использую Django Debug Toolbar, который дает мне несколько советов о том, в чем проблема не , но я не уверен, куда мне обратиться, чтобы увидеть, в чем проблема.
Время, указанное на панели инструментов отладки, запускает загрузку простой страницы с пустым кешем всреда Python 2.7 на моей машине разработки:
- Процессор: 4877,89 мс
- SQL 462,41 мс
- Кэш: 1154,54 мс
Время, указанное панелью инструментов отладки, загружает ту же страницу с пустым кешем в среде Python 3.7 на моей машине для разработки:
- ЦП: 91661.71мс
- SQL 350,44 мс
- Кэш: 609,65 мс
(Я использую файловое кеширование на этой машине для разработки, поэтому, когда я говорю «с пустым кешем», я просто имею в виду, что я rm -r cache
перед загрузкой URL в моем браузере.)
Так что время SQL и Cache уменьшилосьghtly быстрее с обновлением, но время процессора удвоилось.Когда я открываю панель «Время» на панели инструментов отладки, я вижу, что «атрибут времени», который увеличился, является «запросом».
То же самое происходит на каждой странице (включая страницы, которые являются просто HTML, сгенерированным TemplateView
, так что они не делают ничего хитрого), но только когда он впервые загружается из пустого кэша.После этого самого первого ответа все страницы возвращаются примерно к тому же времени ответа, что и в среде Python 2.Так что это как-то связано с первоначальным запросом.
Я не уверен, где искать, чтобы попытаться выяснить, что делает Django только по самому первому запросу.Есть указатели?Или есть что-то очевидное, что я могу ожидать более медленного перехода с Python 2.7 на 3.7?