如何学习如何实现自定义Python异步IO事件循环?

如何学习如何实现自定义Python异步IO事件循环?,python,Python,我正在考虑基于现有的运行循环实现,例如Cocoa的NSRunLoop和Qt的QEventLoop,实现一个新的事件循环,以插入到asyncio。但是我发现很难选择一个开始的地方 文档中说,该系统是设计为可插拔的,但没有明确说明如何做到这一点。我应该从AbstractEventLoop开始,还是从BaseEventLoop开始?我需要提供什么方法,什么组件?我发现唯一有用的替代实现是,但很难理解,因为它严重依赖于Cython和libuv,我不熟悉它们 是否有关于事件循环实现是如何完成的,以及如何定

我正在考虑基于现有的运行循环实现,例如Cocoa的
NSRunLoop
和Qt的
QEventLoop
,实现一个新的事件循环,以插入到
asyncio
。但是我发现很难选择一个开始的地方

文档中说,该系统是设计为可插拔的,但没有明确说明如何做到这一点。我应该从
AbstractEventLoop
开始,还是从
BaseEventLoop
开始?我需要提供什么方法,什么组件?我发现唯一有用的替代实现是,但很难理解,因为它严重依赖于Cython和libuv,我不熟悉它们

是否有关于事件循环实现是如何完成的,以及如何定制的文章?还是一个不太复杂的实现,我可以更快地完成?感谢您的指点。

表示要从
AbstractEventLoop
继承

对于您的其余问题,我觉得文档不是很清楚,但是
asyncio
中具体事件循环的。我已经写了一份报告 从
AbstractEventLoop
继承以创建事件驱动模拟器

我最想听到的是

  • 执行
    创建任务
    。最终用户使用
    asyncio.sure\u future(coro())
    调度协同路由,但这只调用循环的
    create\u task
    方法。它不需要比
    def create_task(self,coro):返回asyncio.task(coro,loop=self)

  • 尽快实施
    call\u
    call\u在
    call\u以后
    。最终用户调用这些函数来调度普通回调函数。当最终用户调度协同路由时,异步/等待系统也会自动调用它们

  • 如果常规回调引发异常,它将转到循环的
    call\u exception\u处理程序
    方法。如果一个协同程序引发了一个异常,那么该异常将存在于某个异步的never-never-land中,您必须这样做

  • 查找以查看应覆盖的所有其他方法。奖励:一些有用的评论