如何学习如何实现自定义Python异步IO事件循环?
我正在考虑基于现有的运行循环实现,例如Cocoa的如何学习如何实现自定义Python异步IO事件循环?,python,Python,我正在考虑基于现有的运行循环实现,例如Cocoa的NSRunLoop和Qt的QEventLoop,实现一个新的事件循环,以插入到asyncio。但是我发现很难选择一个开始的地方 文档中说,该系统是设计为可插拔的,但没有明确说明如何做到这一点。我应该从AbstractEventLoop开始,还是从BaseEventLoop开始?我需要提供什么方法,什么组件?我发现唯一有用的替代实现是,但很难理解,因为它严重依赖于Cython和libuv,我不熟悉它们 是否有关于事件循环实现是如何完成的,以及如何定
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以后
- 如果常规回调引发异常,它将转到循环的
方法。如果一个协同程序引发了一个异常,那么该异常将存在于某个异步的never-never-land中,您必须这样做call\u exception\u处理程序
- 查找以查看应覆盖的所有其他方法。奖励:一些有用的评论