Промежуточное ПО PyCallGraph в Django

Я пытаюсь реализовать промежуточное ПО в django(1.4) для создания графа вызовов с использованием PyCallGraph. Я основал его на двух разных фрагментах, найденных в Интернете. Вот как это выглядит:

import time
from django.conf import settings
from pycallgraph import Config
from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput

class CallgraphMiddleware(object):
    def process_view(self, request, callback, callback_args, callback_kwargs):
        if settings.DEBUG and 'graph' in request.GET:
            config = Config()
            config.trace_filter = GlobbingFilter(exclude=['pycallgraph.*','*.secret_function',], include=['reports.*'])
            graphviz = GraphvizOutput(output_file='callgraph-' + str(time.time()) + '.png')
            pycallgraph = PyCallGraph(output=graphviz, config=config)
            pycallgraph.start()
            self.pycallgraph = pycallgraph

    def process_response(self, request, response):
        if settings.DEBUG and 'graph' in request.GET:
            self.pycallgraph.done()
        return response

Я добавил его в другие промежуточные программы, установленные на settings.py затем запустил сервер.
Кажется, срабатывает, когда process_view называется, но когда дело доходит до process_response Джанго жалуется, говоря мне, что 'CallgraphMiddleware' object has no attribute 'pycallgraph', Как это возможно? Видимо линия

self.pycallgraph = pycallgraph

не учитывается Зачем?

1 ответ

Решение

Я забыл импортировать GlobbingFilter поэтому у меня было исключение, которое не позволило бы коду запустить до строки self.pycallgraph = pycallgraph

Также PyCharm не был правильно настроен. Я решил, благодаря этому ответу:
/questions/35717823/pycallgraph-s-pycharm-ne-rabotaet/35717832#35717832

Другие вопросы по тегам