nameko.utils.concurrency¶
Attributes¶
Classes¶
并行代理类 |
|
一个具有 |
Functions¶
|
对给定列表中的每个项运行一个函数,逐个生成每个函数结果,其中函数调用在由提供的池生成的 |
Package Contents¶
- 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 提供的协程池来管理并发,并支持错误传播机制。 如果有多个对象需要并行执行某个相同的操作,此类可以有效封装该逻辑。
- class nameko.utils.concurrency.SpawningSet[源代码]¶
Bases:
Set
[SpawningProxy
]一个具有
.all
属性的集合,该属性将在集合中的每个项上生成一个方法调用,每个调用都会在其自己的(并行)绿色线程中执行。Initialize self. See help(type(self)) for accurate signature.