Python基于unix socket的并发技巧
Posted 点点寒彬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基于unix socket的并发技巧相关的知识,希望对你有一定的参考价值。
背景
在开发Mock中心的过程中,每个server
与client
通讯的时候,需要使用unix socket
这种高效的本机通讯协议来交换数据,但是unix socket
通讯协议是基于文件的,也就是当并发量大的时候,单个文件作为通讯信道会出现拥堵的情况。
思路
解决的思路很简单,不使用单文件作为通讯信道。
TCP
协议中,应对并发是有多种方式的。最常规的方式就是以多线程的方式,监听多个通讯信道,还有Linux
上比较经典的epoll
的方式。
从本质上来说,多线程的方式,其实就是开启了多个通信信道,在Linux
系统底层看来,就是多个socket
文件。而epoll
的方式,其实就是极致的压榨单信道的性能。
在设计这个通讯方式的时候,其实就是为了简便的实现高性能。
在server
监听的时候,仅监听一个文件,但是回包的时候,client
在请求之前先监听一个文件,然后把文件地址带到请求串中,server
在收到这个请求之后,回包就不通过原路返回,而是回到这个client
监听的地址。
代码
- client
class
以上是关于Python基于unix socket的并发技巧的主要内容,如果未能解决你的问题,请参考以下文章
python练习基于socket的FTP程序 v1.1.0(支持并发)
Python自动化 第八篇:Python基础-Socket编程进阶