Промежуточное ПО 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