跟踪装饰器不传递参数

时间:2017-07-25 15:09:42

标签: python logging decorator alexa

我正在使用Flask-Ask开发Al​​exa技能。我想记录所有意图调用及其参数,并且由于意图都使用ask.intent装饰器方便地注释,我想我可以更改Flask-Ask的代码来执行装饰器代码中的日志记录或者我可以装饰自己,这可以避免在部署到生产时修补库的问题。

我已经构建了下面的解决方案,但问题是* args和** kwargs总是为空,而不是像this issue投票最多的解决方案那样传递。

def tracked_intent(intent_name, mapping={}, convert={}, default={}):
    def decorator(f):
        @ask.intent(intent_name, mapping, convert, default)
        def new_func(*args, **kwargs):
            print('Got intent {} with arguments {} and {}'.format(intent_name, str(args), str(kwargs)))
            return f(*args, **kwargs)
        new_func.__name__ = f.__name__
        return new_func
    return decorator

因此,当我有一个需要参数的意图调用时,我会得到像TypeError: function() missing 2 required positional arguments: 'arg1' and 'arg2'

这样的东西

如何在正确转发函数参数的同时修复我的装饰器“扩展”ask.intent装饰器?

0 个答案:

没有答案