Python Asyncio 库之网络编程详解

本文总阅读量

前记

Python Asyncio提供了一套完整的高性能网络编程接口,它除了提供了一些Socket的异步调用外,还在Socket上层封装了一层Protocol&Transport调用,在Protocol&Transport上层封装了Stream调用来减少开发者的网络编程负担,开发者可以根据自己的需求来选择其中一套来使用。

前记

Python Asyncio提供了一套完整的高性能网络编程接口,它除了提供了一些Socket的异步调用外,还在Socket上层封装了一层Protocol&Transport调用,在Protocol&Transport上层封装了Stream调用来减少开发者的网络编程负担,开发者可以根据自己的需求来选择其中一套来使用。

1.简单介绍

Python Asyncio提供的SocketProtocol&TransportStream三套网络编程封装各有各的优缺点,它们的关系就跟套娃一样,Stream 套在Protocol&TransportProtocol&Transport套在Socket上面。套在最上面的Stram的易用性是最高的

待定内容

stream类似于同步的用法,protocol类似于回调的用法
socket 相关用法: sock_connectsock_acceptsock_recv, and sock_sendall
stream相关用法:
- 读取流的方法: reader.read,readline,readuntil,readexactly
- 检查是否到达EOF reader.ateof
- 控制写入的流程:writer.drain
易用性stream -> protocol & transport-> socket
性能protocol& transport->stram -> socket

stream提供了一些针对TCP的封装
stream比protocol慢的相关issue:https://github.com/python/asyncio/issues/412。但是Python3.11可能有改进

protocol&transport 之所以比socket性能高的原因是eventlopp更知道eventloop?来自于https://www.youtube.com/watch?v=WSq0S7UvI8E&ab_channel=PyConCanada的12:30

查看评论