大家好!我是晨晨💓
希望大家多多支持我!
为了感谢每一个关注我的小可爱:💓文章留言“学习”即可获取晨晨精心准备的学习大礼包书籍教程,都是无偿分享滴💓
最后——如果文章有帮助到你,记得“关注”、“点赞”、“评论”三连哦~
————————————————
本文参考Python官方文档:https://docs.python.org/zh-cn/3.8/library/asyncio-stream.html#examples
本文参考Python官方文档针对官方文档示例进行解析,解析不完整只为了便于理解
流
流是用于处理网络连接的高级async/await-ready原语。流允许发送和接收数据,而不需要使用回调或低级协议和传输。
Stream函数
下面的高级 asyncio 函数可以用来创建和处理流:coroutine asyncio.
open_connection
(host=None, port=None, *, loop=None, limit=None, ssl=None, family=0, proto=0, flags=0, sock=None, local_addr=None, server_hostname=None, ssl_handshake_timeout=None)
建立网络连接并返回一对 (reader, writer)
对象。
返回的 reader 和 writer 对象是 StreamReader
和 StreamWriter
类的实例。
注意:使用ayncio.open_connection()方法创建和处理流时只有在await时才返回reader和writer对象
为了方便测试我们在本地搭建一个nginx服务器,首页index.html内容为“Hello World”
示例:文章来源:https://www.toymoban.com/news/detail-432002.html
import asyncio
async def wget(host):
connect = asyncio.open_connection(host,80)
print(type(connect))
reader,writer = await connect
print(type(reader),type(writer))
async def main():
# 获取表头主机列表
hosts = ['192.168.1.100']
# 根据主机列表获取一个tasks列表
tasks = [asyncio.create_task(wget(host)) for host in hosts]
# 等待任务列表执行结果
await asyncio.gather(*tasks)
# 运行
asyncio.run(main()
运行输出如下:文章来源地址https://www.toymoban.com/news/detail-432002.html
<class 'coroutine'>
<class 'asyncio.streams.StreamReader'> <class 'asyncio.streams.StreamWriter'>
Exception ignored in: <function _ProactorBasePipeTransport.__del__ at
到了这里,关于Python之数据流(stream)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!