nameko.utils¶
Subpackages¶
Submodules¶
Attributes¶
Functions¶
|
用于与标记为 |
|
如果对象在 path 中存在,则导入并返回该对象。 |
|
在 URLs 中隐藏密码。 |
Package Contents¶
- nameko.utils.get_redacted_args(entrypoint, *args, **kwargs)[源代码]¶
用于与标记为
sensitive_arguments
的入口点配合使用的实用函数,例如:nameko.rpc.Rpc
和nameko.events.EventHandler
。- Parameters:
- entrypoint
Entrypoint
被触发的入口点。
- argstuple
方法调用的位置参数。
- kwargsdict
方法调用的关键字参数。
- entrypoint
入口点应该具有
sensitive_arguments
属性,其值是一个字符串或字符串元组,指定应该被隐去的参数或部分参数。如果要部分隐去某个参数,使用以下语法:<argument-name>.<dict-key>[<list-index>]
- Returns:
返回一个字典,由
inspect.getcallargs()
返回,但敏感参数或部分参数已被隐去。
备注
如果其中一个
sensitive_arguments
与调用的args
和kwargs
不匹配或部分匹配,该函数不会引发异常。 这允许进行“模糊”模式匹配(例如,如果存在字段,则隐去该字段,否则不执行任何操作)。为了避免因拼写错误而泄露敏感参数,建议单独测试每个具有
sensitive_arguments
的入口点的配置。例如:class Service(object): @rpc(sensitive_arguments="foo.bar") def method(self, foo): pass container = ServiceContainer(Service, {}) entrypoint = get_extension(container, Rpc, method_name="method") # no redaction foo = "arg" expected_foo = {'foo': "arg"} assert get_redacted_args(entrypoint, foo) == expected # 'bar' key redacted foo = {'bar': "secret value", 'baz': "normal value"} expected = {'foo': {'bar': "********", 'baz': "normal value"}} assert get_redacted_args(entrypoint, foo) == expected
参见
该实用程序的测试演示了其完整用法:
test.test_utils.TestGetRedactedArgs
。