nameko.utils

Subpackages

Submodules

Attributes

Functions

get_redacted_args(entrypoint, *args, **kwargs)

用于与标记为 sensitive_arguments 的入口点配合使用的实用函数,例如: nameko.rpc.Rpcnameko.events.EventHandler

import_from_path(→ Any)

如果对象在 path 中存在,则导入并返回该对象。

sanitize_url(url)

在 URLs 中隐藏密码。

Package Contents

nameko.utils.REDACTED = '********'[源代码]
nameko.utils.get_redacted_args(entrypoint, *args, **kwargs)[源代码]

用于与标记为 sensitive_arguments 的入口点配合使用的实用函数,例如: nameko.rpc.Rpcnameko.events.EventHandler

Parameters:
entrypointEntrypoint

被触发的入口点。

argstuple

方法调用的位置参数。

kwargsdict

方法调用的关键字参数。

入口点应该具有 sensitive_arguments 属性,其值是一个字符串或字符串元组,指定应该被隐去的参数或部分参数。如果要部分隐去某个参数,使用以下语法:

<argument-name>.<dict-key>[<list-index>]
Returns:

返回一个字典,由 inspect.getcallargs() 返回,但敏感参数或部分参数已被隐去。

备注

如果其中一个 sensitive_arguments 与调用的 argskwargs 不匹配或部分匹配,该函数不会引发异常。 这允许进行“模糊”模式匹配(例如,如果存在字段,则隐去该字段,否则不执行任何操作)。

为了避免因拼写错误而泄露敏感参数,建议单独测试每个具有 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

nameko.utils.import_from_path(path) Any[源代码]

如果对象在 path 中存在,则导入并返回该对象。

如果未找到该对象,则引发 ImportError

nameko.utils.sanitize_url(url)[源代码]

在 URLs 中隐藏密码。