Отслеживание от эффекта до его причины в большой кодовой базе Python

У меня достаточно большой проект в Django, который представляет собой достаточно большую структуру, и я использую достаточно большое количество приложений, посредников, контекстных процессоров и т. Д. Масштаб означает, что когда часть базы кода работает для запросов, где я не хочу, чтобы определить, почему это было трудно. Проверка прямого кода слишком трудоемка, так же как и однократное выполнение всего запроса в отладчике.

В этом конкретном случае моя проблема заключается в том, что я получаю «Vary: Cookie» для каждого ответа, включая некоторые, которые я хочу сильно кэшировать, и где мне не нужны никакие файлы cookie. Я подозреваю, но не знаю, как доказать, что какое-то промежуточное программное обеспечение или процессор контекста обращается к request.session даже если он не использует результат – хотя это может быть косвенный доступ, например, через request.user . И, конечно, это может быть совсем другое.

В Python, как бы вы отследили эффект («заголовок Vary был добавлен в ответ») обратно к его причине в большой базе кода?

One Solution collect form web for “Отслеживание от эффекта до его причины в большой кодовой базе Python”

Вот мысль: обезьяна заплатит класс django HttpResponse, чтобы его __setitem__ вызывал исключение, если заданный заголовок Vary . Вы можете позаботиться об этом из другого промежуточного ПО, созданного в противном случае, после его создания. Это должно дать вам хорошую трассировку из строки, задающей заголовок.

 class MonkeyPatchMiddleware(object): def __init__(self): from django.http import HttpResponse original_set_item = HttpResponse.__setitem__ def __setitem__(self, header, value): if header == "Vary": raise ValueError original_set_item(self, header, value) HttpResponse.__setitem__ = __setitem__ 

Установите промежуточное ПО как первое, что находится в вашем стеке промежуточного программного обеспечения в файле настроек django.

  • Как включить функции отладки Eclipse в веб-приложении?
  • Intellij / Pycharm не может отлаживать модули Python
  • Можно ли передать переменную из сеанса pdb в исходный интерактивный сеанс?
  • Ошибка? При отладке с Pycharm
  • Повторить код при отладке и при перезагрузке всех модулей
  • Можно ли использовать bpython в качестве полного отладчика?
  • Как отлаживать внешние .py-функции от Jupyter / IPython
  • Как заставить Matplotlib рисовать в отладчике ipdb в Spyder (или любом другом отладчике)?
  • Как запустить произвольный код при запуске оболочки django?
  • Хороший принтер Python для отладки переменных stdlib не будет работать
  • Как сбросить весь процесс Python для последующей проверки отладки?
  • Python - лучший язык программирования в мире.