如何编写自定义事件循环策略?

How to write custom event loop policy?

我正在研究 asyncio 库,我无法完全理解事件循环策略背后的原因。

到目前为止,很明显这个接口是returns当前上下文事件循环的工厂。但是,上下文的定义尚不清楚。显然,asyncio.AbstractEventLoopPolicy 的接口假定具体实现能够自行提取上下文,因为这两种方法都不接受参数。此模型适用于每个线程的事件循环默认策略,但在更复杂的情况下的使用存在问题。

看起来 context 不是一个任意实体,但应该遵循某些规则(例如全局可见)。我想知道是否在任何地方列出了此类规则。是否有自定义策略的示例?

实现非默认事件循环时需要自定义策略。

主要问题是:我想通过 asyncio.new_event_loop() 创建新的事件循环。线程需要它:只有主线程有隐式事件循环,所有其他线程都应该显式实例化循环。

但我不知道具体的事件循环类型,因此我需要一个工厂来创建循环——可插入的事件循环策略。