装饰器只是简单的包装函数。
编写另一个包装器函数来包装newrelic.agent.data_store_trace 并允许传递名称。
说New Relic将data_store_trace定义为:
import functools
def data_store_trace(product, target, operation):
def wraps(fn):
@functools.wraps(fn)
def wrapped(*args, **kwargs):
print('Tracing: ', fn.__name__, args, kwargs)
return fn(*args, **kwargs)
return wrapped
return wraps
添加另一个级别的间接将给出:
def data_store_trace_with_name(product, operation, target=''):
def wraps(fn):
@functools.wraps(fn)
def wrapped(*args, **kwargs):
return data_store_trace(product, target, operation)(fn)(*args, **kwargs)
return wrapped
return wraps
@data_store_trace_with_name('Mysql', None, '<name>')
def add(x, y):
return x + y
add(5, 6)