Python之数据流(stream)

大家好!我是晨晨💓
希望大家多多支持我!
为了感谢每一个关注我的小可爱:💓文章留言“学习”即可获取晨晨精心准备的学习大礼包书籍教程,都是无偿分享滴💓
最后——如果文章有帮助到你,记得“关注”、“点赞”、“评论”三连哦~
————————————————

本文参考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 对象是 StreamReaderStreamWriter 类的实例。

注意:使用ayncio.open_connection()方法创建和处理流时只有在await时才返回reader和writer对象

为了方便测试我们在本地搭建一个nginx服务器,首页index.html内容为“Hello World”在这里插入图片描述
示例:

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() 

运行输出如下:

<class 'coroutine'>
<class 'asyncio.streams.StreamReader'> <class 'asyncio.streams.StreamWriter'>
Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x00000236AA956F70>
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\asyncio\proactor_events.py", line 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值