nameko.utils.concurrency

Attributes

Classes

SpawningProxy

并行代理类

SpawningSet

一个具有 .all 属性的集合,该属性将在集合中的每个项上生成一个方法调用,每个调用都会在其自己的(并行)绿色线程中执行。

Functions

fail_fast_imap(pool, call, items)

对给定列表中的每个项运行一个函数,逐个生成每个函数结果,其中函数调用在由提供的池生成的 GreenThread 中处理。

Package Contents

nameko.utils.concurrency.ContainerT[源代码]
nameko.utils.concurrency.fail_fast_imap(pool: eventlet.GreenPool, call: Callable[[Type]], items: Iterable[ContainerT] | SpawningSet)[源代码]

对给定列表中的每个项运行一个函数,逐个生成每个函数结果,其中函数调用在由提供的池生成的 GreenThread 中处理。

如果任何函数引发异常,则所有其他正在进行的线程将被终止,并将异常抛给调用者。

此函数类似于 imap()

参数:
  • pool (eventlet.greenpool.GreenPool) -- 用于生成函数线程的池

  • call -- 要调用的函数,期望从给定列表中接收一个项

class nameko.utils.concurrency.SpawningProxy(items: Iterable[ContainerT] | SpawningSet, abort_on_error: bool = False)[源代码]

Bases: object

并行代理类

将一组可迭代项封装,使得对返回的 SpawningProxy 实例的调用将在每个项上生成一个 GreenThread

当每个生成的线程完成时返回。

参数:
  • items -- 要处理的可迭代项集

  • abort_on_error -- 如果为 True, 任何在单个项调用中引发的异常将导致所有同级项调用线程被终止,并立即将异常传播给调用者。

chatGPT回答:

SpawningProxy 的主要功能是并行调用一组对象的方法。 它使用 eventlet 提供的协程池来管理并发,并支持错误传播机制。 如果有多个对象需要并行执行某个相同的操作,此类可以有效封装该逻辑。

_items[源代码]
abort_on_error: bool[源代码]
__getattr__(name: str)[源代码]
class nameko.utils.concurrency.SpawningSet[源代码]

Bases: Set[SpawningProxy]

一个具有 .all 属性的集合,该属性将在集合中的每个项上生成一个方法调用,每个调用都会在其自己的(并行)绿色线程中执行。

Initialize self. See help(type(self)) for accurate signature.

property all[源代码]