请参阅NewRelic中的装饰Django视图名称

时间:2013-10-04 19:21:09

标签: django newrelic python-decorators

我所有的django视图方法都有python装饰器,这使得NewRelic显示包装器方法名称(wrapped)而不是视图名称。请参阅下面屏幕截图中的两个底线。

如何解决这个问题?

enter image description here

2 个答案:

答案 0 :(得分:1)

看看functools.wrap这将确保装饰函数的__name__属性不是装饰器的名称(但它保留了内部函数的名称)

答案 1 :(得分:1)

我为New Relic工作,我们知道这个问题。为了避免它,你可以使用标准库'functools'模块中的'wraps()'装饰器来包装内部装饰器函数,如下所示:

import functools

def decorator(f):
    @functools.wraps(f)
    def _decorator():
        f()
    return _decorator

@decorator
def foo():
    pass

有关详细信息,请参阅此文档:https://newrelic.com/docs/python/python-tips-and-tricks#decorators_and_introspection