python多进程web服务器新思路

python这种语言可能最让人诟病的就是它的语言执行效率比较低(当然,相对于ruby,python还算良心),多线程残废难以利用多核cpu,最开始写java多线程写的爽了,会非常不适应在python,没办法只有多进程的方法来搞了。

在web服务器方面,python现在比较常用的方式有两种:

(1)开多个进程,大家监听不同的端口,然后前面挂一个反向代理
(2)首先启动父进程,监听端口,然后启动多个子进程,这样子进程就默认拥有了父进程的监听端口,虽然可能会存在惊群的可能性,不过其实也无所谓啦(这种方式其实还有另外一个让人蛋疼的东西,停止系统后,监听的端口可能要等一段时间才能使用)。

对于上述第一种,比较麻烦,还需要用nginx之类的搭建一个反向代理,对于第二种方式,其实有一个比较麻烦的事情,就类似于node.js的cluster一样,会发现其实大多数的请求都被某一个进程拿到了,比较蛋疼。

其实,在linux下还有另外一种方式,毕竟有sendmsg,那么思路如下:

(1)需要启动一个进程来建立监听,例如它来监听80端口,将其称之为监听进程
(2)别的进程与刚刚的监听进程建立unixdomain socket连接
(3)当监听进程accept到客户端连接之后,将文件描述符通过sendmsg方式发送给别的进程,这里就可以适当的加上一些负载均衡的手段

这样子就不再需要监听多个端口,然后挂反向代理了,而且负载均衡方面也可以得到照顾。

在公司已经通过这种方式上线了几个系统,没有出现过问题,也证明其实这种方式是可行的,等到以后,有机会将自己这部分的代码放出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值