nameko.extensions

Attributes

Classes

Extension

请注意,Extension.__init__bind 过程中以及实例化时都会被调用,因此请避免在此方法中产生副作用。请使用 setup

SharedExtension

请注意,Extension.__init__bind 过程中以及实例化时都会被调用,因此请避免在此方法中产生副作用。请使用 setup

DependencyProvider

请注意,Extension.__init__bind 过程中以及实例化时都会被调用,因此请避免在此方法中产生副作用。请使用 setup

ProviderCollector

Entrypoint

入口点封装类

Functions

register_entrypoint(fn, entrypoint)

is_extension(obj)

is_dependency(obj)

is_entrypoint(obj)

iter_extensions(extension)

extension 的子扩展进行深度优先迭代器。

Module Contents

nameko.extensions._log[源代码]
nameko.extensions.ENTRYPOINT_EXTENSIONS_ATTR = 'nameko_entrypoints'[源代码]
class nameko.extensions.Extension[源代码]

Bases: object

请注意,Extension.__init__bind 过程中以及实例化时都会被调用,因此请避免在此方法中产生副作用。请使用 setup

此外,binditer_extensions 使用反射来查找扩展可能声明的任何子扩展。扩展上的任何描述符应该预计在反射过程中被调用,这发生在 ServiceContainer.__init__ServiceContainer.setup 之间。

Extension.container 属性提供对绑定到该扩展的 nameko.containers.ServiceContainer 实例的访问,否则为 None

__params = None[源代码]
container = None[源代码]
setup()[源代码]

在容器启动之前调用了绑定的扩展。

扩展应在此处进行任何必要的初始化。

start()[源代码]

在容器成功启动时调用绑定的扩展。

此方法仅在所有其他扩展成功返回 Extension.setup 后被调用。如果扩展对外部事件做出反应,它现在应该开始对此进行响应。

stop()[源代码]

在服务容器开始关闭时调用。

扩展应在此处执行任何优雅的关闭操作。

kill()[源代码]

在没有优雅关闭的情况下调用以停止此扩展。

扩展应在此处紧急关闭。这意味着尽快停止,省略清理操作。对于某些依赖项,这可能与 stop() 不同。

例如,messaging.QueueConsumer 类跟踪正在处理的消息和待处理的消息确认。它的 kill 实现会尽快丢弃这些消息并与 Rabbit 断开连接。

在执行 kill 时,扩展不应引发异常,因为容器已经在关闭。相反,它们应该记录适当的信息,并捕获异常,以允许容器继续关闭。

bind(container)[源代码]

获取当前扩展的实例绑定到 container.

is_bound()[源代码]
__repr__()[源代码]
class nameko.extensions.SharedExtension[源代码]

Bases: Extension

请注意,Extension.__init__bind 过程中以及实例化时都会被调用,因此请避免在此方法中产生副作用。请使用 setup

此外,binditer_extensions 使用反射来查找扩展可能声明的任何子扩展。扩展上的任何描述符应该预计在反射过程中被调用,这发生在 ServiceContainer.__init__ServiceContainer.setup 之间。

Extension.container 属性提供对绑定到该扩展的 nameko.containers.ServiceContainer 实例的访问,否则为 None

property sharing_key[源代码]
bind(container)[源代码]

支持共享的绑定实现。

class nameko.extensions.DependencyProvider[源代码]

Bases: Extension

请注意,Extension.__init__bind 过程中以及实例化时都会被调用,因此请避免在此方法中产生副作用。请使用 setup

此外,binditer_extensions 使用反射来查找扩展可能声明的任何子扩展。扩展上的任何描述符应该预计在反射过程中被调用,这发生在 ServiceContainer.__init__ServiceContainer.setup 之间。

Extension.container 属性提供对绑定到该扩展的 nameko.containers.ServiceContainer 实例的访问,否则为 None

attr_name = None[源代码]
bind(container, attr_name: str)[源代码]

获取一个依赖项的实例,以便与 containerattr_name 绑定。

get_dependency(worker_ctx)[源代码]

在工作者执行之前调用。依赖提供者应返回一个对象,以便容器将其注入到工作者实例中。

worker_result(worker_ctx, result=None, exc_info=None)[源代码]

在服务工作者执行结果时调用。

需要处理结果的依赖项应在此处进行处理。此方法在任何工作者完成时会被调用所有 Dependency 实例。

示例:数据库会话依赖项可能会刷新事务。

Parameters:
worker_ctxWorkerContext

spawn_worker()

worker_setup(worker_ctx)[源代码]

在服务工作者执行任务之前调用。

依赖项应在此处进行任何预处理,如果失败则引发异常。

Example: ...

Parameters:
worker_ctxWorkerContext

spawn_worker()

worker_teardown(worker_ctx)[源代码]

在服务工作者执行完任务后调用。

依赖项应在此处进行任何后处理,如果失败则引发异常。

示例:数据库会话依赖项可能会提交会话。

Parameters:
worker_ctxWorkerContext

spawn_worker()

__repr__()[源代码]
class nameko.extensions.ProviderCollector(*args, **kwargs)[源代码]

Bases: object

_providers[源代码]
_providers_registered = False[源代码]
_last_provider_unregistered[源代码]
register_provider(provider)[源代码]
unregister_provider(provider)[源代码]
wait_for_providers()[源代码]

等待与收集器注册的任何提供者注销。

如果没有提供者被注册,则立即返回。

stop()[源代码]

使用 ProviderCollector 作为混入类的子类的默认 :meth:Extension.stop() 实现。

nameko.extensions.register_entrypoint(fn, entrypoint)[源代码]
class nameko.extensions.Entrypoint(expected_exceptions=(), sensitive_arguments=(), **kwargs)[源代码]

Bases: Extension

入口点封装类

Parameters:
expected_exceptions异常类或异常类元组

指定可能由调用者引起的异常(例如,通过提供错误的参数)。 保存在入口点实例中作为 entrypoint.expected_exceptions,供其他扩展(例如监控系统)后续检查。

sensitive_arguments字符串或字符串元组

将参数或参数的一部分标记为敏感。保存在入口点实例中作为 entrypoint.sensitive_arguments, 供其他扩展(例如日志系统)后续检查。

seealso:

nameko.utils.get_redacted_args()

method_name = None[源代码]

记录了RPC调用的方法名称

sensitive_variables[源代码]
expected_exceptions[源代码]
sensitive_arguments[源代码]
bind(container, method_name)[源代码]

获取此入口点的实例,以便与 method_name 绑定到 container

check_signature(args, kwargs)[源代码]
classmethod decorator(*args, **kwargs)[源代码]
__repr__()[源代码]
nameko.extensions.is_extension(obj: Any)[源代码]
nameko.extensions.is_dependency(obj: Any)[源代码]
nameko.extensions.is_entrypoint(obj: Any)[源代码]
nameko.extensions.iter_extensions(extension)[源代码]

extension 的子扩展进行深度优先迭代器。