今天小编给大家分享一下Python异步之非阻塞流如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。asyncio 的一个主要好处是能够使用非阻塞流。Asyncio 提供非阻塞 I/O 套接字编程。这是通过流提供的。可以打开提供对流写入器和流写入器的访问的套接字。然后可以使用协同程序从流中写入和读取数据,并在适当的时候暂停。完成后,可以关闭套接字。异步流功能是低级的,这意味着必须手动实现所需的任何协议。这可能包括常见的 Web 协议,例如:用于与 Web 服务器交互的 HTTP 或 HTTPS用于与电子邮件服务器交互的 SMTP用于与文件服务器交互的 FTP。这些流还可用于创建服务器以使用标准协议处理请求,或开发您自己的特定于应用程序的协议。现在我们知道什么是异步流,让我们看看如何使用它们。可以使用 asyncio.open_connection() 函数打开 asyncio TCP 客户端套接字连接。这是一个必须等待的协程,一旦免费云主机域名套接字连接打开就会返回。该函数返回用于与套接字交互的 StreamReader 和 StreamWriter 对象。asyncio.open_connection() 函数采用许多参数来配置套接字连接。两个必需的参数是主机和端口。host 是一个字符串,指定要连接的服务器,例如域名或 IP 地址。port为socket端口号,如HTTP服务器为80,HTTPS服务器为443,SMTP为23等。通过 SSL 协议支持加密套接字连接。最常见的例子可能是正在取代 HTTP 的 HTTPS。这可以通过将“ssl”参数设置为 True 来实现。可以使用 asyncio.start_server() 函数打开 asyncio TCP 服务器套接字。这是一个必须等待的协程。该函数返回一个代表正在运行的服务器的 asyncio.Server 对象。三个必需的参数是回调函数、主机和端口。回调函数是一个由名称指定的自定义函数,每次客户端连接到服务器时都会调用该函数。主机是客户端将指定连接的域名或 IP 地址。端口是接收连接的套接字端口号,例如 21 用于 FTP 或 80 用于 HTTP。我们可以使用 asyncio.StreamWriter 将数据写入套接字。数据以字节形式写入。可以使用 write() 方法将字节数据写入套接字。或者,可以使用 writelines() 方法写入组织成列表或可迭代的多“行”字节数据。写入数据块或挂起调用协程的方法都没有。写入字节数据后,最好通过 drain() 方法清空套接字。这是一个Coroutine,将暂停呼叫者,直到传输字节并准备好插座为止。我们可以使用 asyncio.StreamReader 从套接字读取数据。数据以字节格式读取,因此字符串在使用前可能需要进行编码。所有读取方法都是必须等待的协程。可以通过 read() 方法读取任意数量的字节,该方法将一直读取到文件末尾 (EOF)。此外,可以通过“n”参数指定要读取的字节数。如果您知道下一个响应的预期字节数,这可能会有所帮助。可以使用 readline() 方法读取单行数据。这将返回字节,直到遇到换行符“n”或 EOF。这在阅读使用文本行操作的标准协议时很有用。此外,还有一个 readexactly() 方法来读取确切数量的字节,否则会引发异常,还有一个 readuntil() 方法将读取字节,直到读取字节形式的指定字符。可以通过 asyncio.StreamWriter 关闭套接字。可以调用 close() 方法来关闭套接字。此方法不会阻塞。虽然 close() 方法不会阻塞,但我们可以等待套接字完全关闭后再继续。这可以通过 wait_closed() 方法来实现。这是一个可以等待的协程。我们可以通过 is_closing() 方法检查套接字是否已经关闭或正在关闭。以上就是“Python异步之非阻塞流如何使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。
今天小编给大家分享一下Java的SpringMVC拦截器怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Spring MVC 的 拦截器 类…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。