1.twisted 的reactor,相当于epool\select,即多路服用。
reactor是单线程监听和执行回调函数的,所以回调函数要避免阻塞。
2.Deferred 可使得函数调用序列化。入下图所示,
右侧为功能函数,左侧为异常处理函数。功能函数返回的值会传入下一曾的功能函数。
异常函数如果能正常返回,返回值传入下一曾的功能函数,如果抛出异常,则异常传入下层的异常处理函数。当功能函数抛出异常时,会将异常包装成
同一层的两个函数同时进出链表,不管是功能函数还是异常函数,有一个执行了,
同一层的两个函数都出链表。如果链表为空,则抛出AllReadyCalledEror
![第三部分:初步认识Twisted](https://i-blog.csdnimg.cn/blog_migrate/b9d9d4a07bf4c8d914d6aff1962fbbb3.jpeg)
reactor是单线程监听和执行回调函数的,所以回调函数要避免阻塞。
2.Deferred 可使得函数调用序列化。入下图所示,
![第七部分:小插曲,Deferred](https://i-blog.csdnimg.cn/blog_migrate/5b7c2f806d167b3e5e494c4df2fb72ca.jpeg)
右侧为功能函数,左侧为异常处理函数。功能函数返回的值会传入下一曾的功能函数。
异常函数如果能正常返回,返回值传入下一曾的功能函数,如果抛出异常,则异常传入下层的异常处理函数。当功能函数抛出异常时,会将异常包装成
erro,并作为参数传入下一曾的异常处理函数,再往下传递。
绿线表示成功调用,红线表示有异常抛出
同一层的两个函数同时进出链表,不管是功能函数还是异常函数,有一个执行了,
同一层的两个函数都出链表。如果链表为空,则抛出AllReadyCalledEror