1

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

如何解决这个问题?

在此处输入图像描述

4

2 回答 2

1

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

于 2013-10-04T20:18:35.303 回答
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

于 2013-10-04T21:36:48.243 回答