i’d like to obtain the parameter from the decorated function. It’s a lil bit different from the usual one.
Here is the code
import functools
def remotable_timer(fn):
@functools.wraps(fn)
def wrapper(*args, **kwargs):
print('remotable_timer', fn, args, **kwargs)
result = fn(*args, **kwargs)
return result
wrapper.original_fn = fn
return wrapper
def remotable_cache(fn):
@functools.wraps(fn)
def wrapper(*args, **kwargs):
print('remotable_cache', fn, args)
result = fn(*args, **kwargs)
return result
wrapper.original_fn = fn
return wrapper
remotable = remotable_timer(remotable_cache)
class TestClass(object):
@remotable
def test_function(self, context, *args):
print('test_function', context, *args)
if __name__ == '__main__':
test = TestClass()
test.test_function('context', 1, 2, 3)
output: i need fetch: context, 1,2,3(parameters in test_function) in remotable_timer
remotable_timer <function remotable_cache at 0x000002780F7336A8> (<function TestClass.test_function at 0x000002780F733730>,) remotable_cache <function TestClass.test_function at 0x000002780F733730> (<__main__.TestClass object at 0x000002780F72D898>, 'context', 1, 2, 3) test_function context 1 2 3
i know the code below can be a potential way to achieve it, but i have to decorate remotable_cache in line anyway. Dose anyone have any idea, i’ll be appreciate it !
class TestClass(object):
@remotable_timer
@remotable_cache
def test_function(self, context, *args):
print('test_function', context, *args)
Advertisement
Answer
You should change
remotable = remotable_timer(remotable_cache)
to
def remotable(func): return remotable_timer(remotable_cache(func))
Here is the result
remotable_timer <function TestClass.test_function at 0x0000010A12B99280> (<__main__.TestClass object at 0x0000010A12B93F70>, 'context', 1, 2, 3) remotable_cache <function TestClass.test_function at 0x0000010A12B991F0> (<__main__.TestClass object at 0x0000010A12B93F70>, 'context', 1, 2, 3) test_function context 1 2 3