Моя загрузка и автоперезагрузка на сервере запуска python manage.py занимают много времени. (25 секунд+). Я немного покопался, и, похоже, он застрял на «Выполнение системных проверок..». Чтобы исследовать больше, я добавил таймер для каждой из функций проверки.
C:\Programs\Python35-32\python.exe manage.py runserver
Performing system checks...
self.check: check_default_cache_is_configured 0.0
self.check: check_duplicate_template_settings 0.0
self.check: check_all_models 0.028018712997436523
self.check: check_model_signals 0.0
self.check: check_setting_app_dirs_loaders 0.0
self.check: check_url_config 25.260559558868408
self.check: check_admin_app 0.0
self.check: check_user_model 0.0
self.check: check_generic_foreign_keys 0.0010006427764892578
System check identified no issues (0 silenced).
self.check: 25.289578914642334
self.check_migrations: 0.08856558799743652
June 28, 2016 - 15:43:08
Django version 1.9.6, using settings 'mar16_cookifi_com.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Я обнаружил, что в check\urls.py, resolver.url_patterns занимает много времени.
def check_resolver(resolver):
"""
Recursively check the resolver.
"""
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
warnings = []
for pattern in resolver.url_patterns:
if isinstance(pattern, RegexURLResolver):
Я не уверен, что urlresolver.url_patterns занимает много времени. Я был бы признателен за помощь в понимании того, почему загрузка url_patters занимает 25 секунд. Что я могу сделать, чтобы уменьшить это.
По крайней мере, я хотел бы отключить check_url_config. Решение для 1 является более предпочтительным.
Добавлен:
Я вручную отключил функцию проверки в коде django. [Изменить] На самом деле это просто отложило проблему до первой загрузки, которая заняла 25 секунд.
@register(Tags.urls)
def check_url_config(app_configs, **kwargs):
return []
if getattr(settings, 'ROOT_URLCONF', None):
from django.core.urlresolvers import get_resolver
resolver = get_resolver()
return check_resolver(resolver)
return []
Время сокращается до доли секунды:
C:\Programs\Python35-32\python.exe manage.py runserver
Performing system checks...
self.check: check_default_cache_is_configured 0.0
self.check: check_duplicate_template_settings 0.0
self.check: check_all_models 0.028048038482666016
self.check: check_model_signals 0.0
self.check: check_setting_app_dirs_loaders 0.0
self.check: check_url_config 0.0
self.check: check_admin_app 0.0
self.check: check_user_model 0.0
self.check: check_generic_foreign_keys 0.0
System check identified no issues (0 silenced).
self.check: 0.028048038482666016
self.check_migrations: 0.06304526329040527
June 28, 2016 - 16:24:36
Django version 1.9.6, using settings 'mar16_cookifi_com.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Но я хотел бы иметь решение, в котором я не изменяю код django.
Еще через 1 час:
Нашел причину проблемы. Файл URL загружает все наши представления. В одно из представлений недавно был добавлен модуль машинного обучения, обучение которого занимает 25 секунд. Ленивый модуль машинного обучения сократил время загрузки до секунды.