nameko.runners

Attributes

Classes

ServiceRunner

允许用户并发提供多个服务。

Functions

run_services(config, *services, **kwargs)

为上下文块提供多个服务。

Module Contents

nameko.runners._log[源代码]
class nameko.runners.ServiceRunner(config: dict)[源代码]

Bases: object

允许用户并发提供多个服务。 调用者可以为多个服务类注册名称,然后使用 start 方法来提供它们,并使用 stop 和 kill 方法 来停止它们。wait 方法将阻塞,直到所有服务停止。

示例:

runner = ServiceRunner(config)
runner.add_service(Foobar)
runner.add_service(Spam)

add_sig_term_handler(runner.kill)

runner.start()

runner.wait()

初始化一个服务运行者

参数:

config (dict) -- 配置字典,从yaml配置文件中解析出来的, 默认为只有1个 AMQP 地址

service_map: Dict[str, nameko.containers.ServiceContainer][源代码]
config: Dict[str, Any][源代码]
container_cls: Type[nameko.containers.ServiceContainer][源代码]
property service_names[源代码]
property containers[源代码]
add_service(cls: Type)[源代码]

将服务类添加到运行器中。 对于给定的服务名称,最多只能有一个服务类。 服务类必须在调用 start() 之前注册。

start()[源代码]

启动所有注册的服务。

每个服务都会使用 __init__ 方法中提供的容器类创建一个新容器。

所有容器将并发启动,该方法将在所有容器完成启动例程之前阻塞。

stop()[源代码]

并发停止所有正在运行的容器。 该方法在所有容器停止之前将阻塞。

kill()[源代码]

并发杀死所有正在运行的容器。 该方法将在所有容器停止之前将阻塞。

wait()[源代码]

等待所有正在运行的容器停止。

nameko.runners.run_services(config: dict, *services: Type, **kwargs)[源代码]

为上下文块提供多个服务。 调用者可以指定多个服务类,然后在退出上下文块时 停止(默认)或杀死它们。

示例:

with run_services(config, Foobar, Spam) as runner:
    # 与服务交互并在退出块时停止它们

# 服务已停止

可以通过关键字参数指定额外的配置,以供 :class:ServiceRunner 实例使用:

with run_services(config, Foobar, Spam, kill_on_exit=True):
    # 与服务交互

# 服务已被杀死
Parameters:
configdict

用于实例化服务容器的配置

services服务定义

在上下文块中提供的服务

kill_on_exitbool (default=False)

如果为 True,在退出上下文块时对服务容器调用 kill()。 否则在退出块时将调用 stop()

Returns:

配置好的 ServiceRunner 实例