
Python Asyncio 库之网络编程详解
前记
Python Asyncio
提供了一套完整的高性能网络编程接口,它除了提供了一些Socket
的异步调用外,还在Socket
上层封装了一层Protocol
&Transport
调用,在Protocol
&Transport
上层封装了Stream
调用来减少开发者的网络编程负担,开发者可以根据自己的需求来选择其中一套来使用。
前记
Python Asyncio
提供了一套完整的高性能网络编程接口,它除了提供了一些Socket
的异步调用外,还在Socket
上层封装了一层Protocol
&Transport
调用,在Protocol
&Transport
上层封装了Stream
调用来减少开发者的网络编程负担,开发者可以根据自己的需求来选择其中一套来使用。
1.简单介绍
Python Asyncio
提供的Socket
、Protocol
&Transport
、Stream
三套网络编程封装各有各的优缺点,它们的关系就跟套娃一样,Stream
套在Protocol
&Transport
,Protocol
&Transport
套在Socket
上面。套在最上面的Stram
的易用性是最高的
待定内容
stream类似于同步的用法,protocol类似于回调的用法
socket 相关用法: sock_connect
, sock_accept
, sock_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
- 本文作者:So1n
- 本文链接:http://so1n.me/2023/02/27/python_asyncio_lib_network[%E8%8D%89%E7%A8%BF]/index.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!
