Django-debug-toolbar: تجاوز سعة المكدس عند استخدام Django Debug Toolbar 1.8 (يعمل بشكل جيد في 1.7)

تم إنشاؤها على ١ يونيو ٢٠١٧  ·  11تعليقات  ·  مصدر: jazzband/django-debug-toolbar

مساء الخير ، أتلقى خطأ تجاوز سعة مكدس عندما أحاول استخدام DJDT 1.8 على المسارات التي يخدمها Wagtail CMS. تعمل نفس المسارات / الصفحات مع DJDT 1.7. أنا أدير Django 1.11.2 و Wagtail 1.10.1. هذا هو الأثر:

Fatal Python error: Cannot recover from stack overflow.

Current thread 0x00007f5d3f7f8700 (most recent call first):
  File "/venv-path/django/utils/functional.py", line 215 in wrapper
  File "/venv-path/django/template/base.py", line 835 in __init__
  File "/venv-path/django/template/base.py", line 685 in __init__
  File "/venv-path/django/template/base.py", line 600 in compile_filter
  File "/venv-path/django/template/defaulttags.py", line 826 in do_for
  File "/venv-path/django/template/base.py", line 513 in parse
  File "/venv-path/django/template/base.py", line 230 in compile_nodelist
  File "/venv-path/django/template/base.py", line 191 in __init__
  File "/venv-path/django/template/loaders/base.py", line 44 in get_template
  File "/venv-path/django/template/engine.py", line 136 in find_template
  File "/venv-path/django/template/engine.py", line 162 in get_template
  File "/venv-path/django/template/backends/django.py", line 39 in get_template
  File "/venv-path/django/template/loader.py", line 21 in get_template
  File "/venv-path/django/template/loader.py", line 67 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  File "/venv-path/django/template/backends/django.py", line 66 in render
  File "/venv-path/django/template/loader.py", line 68 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  File "/venv-path/django/template/backends/django.py", line 66 in render
  File "/venv-path/django/template/loader.py", line 68 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  File "/venv-path/django/template/backends/django.py", line 66 in render
  File "/venv-path/django/template/loader.py", line 68 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  File "/venv-path/django/template/backends/django.py", line 66 in render
  File "/venv-path/django/template/loader.py", line 68 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  File "/venv-path/django/template/backends/django.py", line 66 in render
  File "/venv-path/django/template/loader.py", line 68 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  File "/venv-path/django/template/backends/django.py", line 66 in render
  File "/venv-path/django/template/loader.py", line 68 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  File "/venv-path/django/template/backends/django.py", line 66 in render
  File "/venv-path/django/template/loader.py", line 68 in render_to_string
  File "/venv-path/wagtail/wagtailcore/blocks/base.py", line 259 in render
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 377 in __html__
  File "/venv-path/wagtail/wagtailcore/blocks/stream_block.py", line 380 in __str__
  File "/venv-path/django/utils/encoding.py", line 76 in force_text
  File "/venv-path/debug_toolbar/panels/templates/panel.py", line 128 in _store_template_info
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in <listcomp>
  File "/venv-path/django/dispatch/dispatcher.py", line 193 in send
  File "/venv-path/django/test/utils.py", line 106 in instrumented_test_render
  File "/venv-path/django/template/base.py", line 207 in render
  ...

Thread 0x00007f5d4bcb3700 (most recent call first):
  File "/usr/lib64/python3.5/selectors.py", line 376 in select
  File "/usr/lib64/python3.5/socketserver.py", line 232 in serve_forever
  File "/venv-path/django/core/servers/basehttp.py", line 174 in run
  File "/venv-path/django/core/management/commands/runserver.py", line 149 in inner_run
  File "/venv-path/django/utils/autoreload.py", line 227 in wrapper

Thread 0x00007f5d61887740 (most recent call first):
  File "/venv-path/django/utils/autoreload.py", line 281 in reloader_thread
  File "/venv-path/django/utils/autoreload.py", line 298 in python_reloader
  File "/venv-path/django/utils/autoreload.py", line 332 in main
  File "/venv-path/django/core/management/commands/runserver.py", line 110 in run
  File "/venv-path/django/core/management/commands/runserver.py", line 101 in handle
  File "/venv-path/django/core/management/base.py", line 330 in execute
  File "/venv-path/django/core/management/commands/runserver.py", line 62 in execute
  File "/venv-path/django/core/management/base.py", line 283 in run_from_argv
  File "/venv-path/django/core/management/__init__.py", line 355 in execute
  File "/venv-path/django/core/management/__init__.py", line 363 in execute_from_command_line
  File "manage.py", line 15 in <module>
Aborted

أنا بخير مع تشغيل 1.7 في الوقت الحالي ، لكنني في حيرة من أين أبدأ البحث في هذه المشكلة. أي أفكار أو نصائح أو حلول نأمل؟ شكرا لك مقدما.

التعليق الأكثر فائدة

يحتمل أن تكون مرتبطة بـ https: //github.com/wagtail/wagtail/issues/2874 ...؟

ال 11 كومينتر

يمكنني تأكيد نفس المشكلة عند استخدام DDT 1.8 مع Django 1.8.

لقد رأيت نفس المشكلة - تم تشغيلها بالنسبة لي عند استخدام كتلة StreamField التي حددت نموذجًا. كانت إضافة هذا النموذج إلى تهيئة شريط أدوات التصحيح SKIP_TEMPLATE_PREFIXES حلاً بديلاً. على ما أذكر (على الرغم من أنه كان منذ بعض الوقت) ، كانت المشكلة الأساسية هي أن كائن الكتلة يعرض قالبًا بطريقة __str__ ، مما أدى إلى تكرار لا نهائي في لوحة TEMPLATES من شريط أدوات التصحيح.

gasman أعتقد أنك قد ترغب في إلقاء نظرة على هذه المسألة.

يحتمل أن تكون مرتبطة بـ https: //github.com/wagtail/wagtail/issues/2874 ...؟

لقد اختبرت نفس الشيء مع DDT 1.8 و Django 1.11.2 و Wagtail 1.10.1.
تم إعادة إنتاجه باستخدام Python 3.6 و 3.6.1 و 3.7a

بعد إجراء بعض التحقيقات ، توجد حلقة لا نهائية تم إنشاؤها في اللوحات . value هنا عبارة عن StructValue الذي يمثل تمثيل السلسلة في الواقع عرضًا للقالب يؤدي إلى تشغيل إشارة template_rendered .

لقد قمت بتصحيحه على شكل قرد لجعله يعمل لمن يستخدمون الذعرة. التصحيح هنا:

https://github.com/FlipperPA/django-debug-toolbar/commit/e68cfa509566bf5332c37f03c0fd9753a873d491

لا أتوقع أن تكون هذه علاقة عامة ، لأنها خاصة بالذعرة.

إصلاح عاجل آخر لهذا الأمر هو استبعاد القوالب المستخدمة من قبل StructBlock من شريط أدوات التصحيح. على سبيل المثال

class MyStructBlock(StructBlock):
    ...
    class Meta:
        ...
        template = 'myblocks/structblock.html'

وأضف إلى ملف settings.py :

DEBUG_TOOLBAR_CONFIG = {
    'SKIP_TEMPLATE_PREFIXES': ('django/forms/widgets/', 'admin/widgets/', 'myblocks/structblock.html'),
}

من مستند DDT مقابل SKIP_TEMPLATE_PREFIXES :

يتم تخطي القوالب التي تبدأ بهذه السلاسل عند تجميع القوالب والسياقات المعروضة. يتم تخطي أدوات النماذج المستندة إلى القوالب افتراضيًا لأن لوحة HTML يمكن أن تنمو بسهولة لمئات الميجابايت مع العديد من حقول النماذج والعديد من الخيارات.

يعمل لدي.

واجهتنا هذه المشكلة مع Django Debug Toolbar 1.8 و django-floppyforms وقمنا بإصلاح هذه المشكلة بطريقة مماثلة:

DEBUG_TOOLBAR_CONFIG = {
    'SKIP_TEMPLATE_PREFIXES': (
        'django/forms/widgets/',
        'admin/widgets/',
        'floppyforms/'
    ),
    'DISABLE_PANELS': {
        'debug_toolbar.panels.redirects.RedirectsPanel',
        'debug_toolbar.panels.redirects.TemplatesPanel'
    },
}

قررنا أيضًا تعطيل TemplatesPanel افتراضيًا لأنه كان يؤدي إلى إبطاء الصفحة بشكل كبير. كان تحميل الصفحة بطيئًا ثلاث مرات مقارنةً بـ Django Debug Toolbar 1.7.

تم الإصلاح في https://github.com/wagtail/wagtail/pull/3738 - أعتقد أنه يمكن إغلاق هذا ، لأنه مشكلة الذعرة.

gasman شكرا!

يؤثر أيضًا على django-el-pagination==3.1.0 ، إضافة 'el_pagination/', إلى SKIP_TEMPLATE_PREFIXES يساعد.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات