我在python manage.py runserver上的加载和自动加载需要花费很多时间。 (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代码。
再过一小时:
找到问题的原因。 url文件正在加载我们的所有视图。其中一个观点最近增加了一个ML模块,需要25秒才能训练。使ML模块延迟将加载时间缩短到一秒。
答案 0 :(得分:0)
Django有一个SILENCED_SYSTEM_CHECKS
可以防止显示警告,但它没有钩子来阻止检查运行。
您可以通过在Django源代码中注释掉the import来阻止URL检查。
但是,我不确定这会加快您的申请速度。加载URL模式后,Django会同时导入视图。如果你禁用URL检查,那么Django仍然需要稍后加载URL配置,所以我怀疑你会看到类似的延迟。您应该进一步调查以找出包含X,Y = np.meshgrid(label_x,label_y)
out = np.column_stack((Y.ravel(),X.ravel(),a.ravel()))
个文件和视图需要花费很长时间才能加载的文件。