@
awanabe 楼主你缺少一个好用而且用的熟练的 python 分布式服务化框架。
我猜楼主是要做一个基于 websocket 的网关或者推送服务吧,想要维持大量的客户端连接,所以需要多个进程来支撑,那么可以单独做 connector 系统,专门用来维护与客户端的连接,多开进程,自然就能承受更多的客户端连接了( gevent , tornado 都能很方便的实现)。
当然系统又不可能只是维护连接就好了,例如可能业务层面上需要主动向特定客户推送一些数据,那么就涉及到别的业务系统向当前的 connector 系统发送数据,然后推送给指定客户端的需求,也就发展成了各个系统间通信交互或者说 RPC 调用的需求。
如果楼主有用的 6 的 Python 分布式框架就能解决了。。。
我最开始的回复其实就是想说,可以更发散一些,不能总是用做 web 系统的思维来做所有的业务,毕竟 Python 也是可以做分布式, RPC ,服务化的。有时候业务变得复杂了,或者是要求变高了,例如需要更高的承载,更高的吞吐量,用简单做 web 系统的方式可能就不能满足需求了。
(不过,现在 Python 环境对分布式,服务系统这些东西讨论的还真的很少,也难得见到有好用的开源框架放出来,相反这方面 Java 环境倒是做的最好的,毕竟人家做各种大型业务系统成功案例多,自然就有东西放出来讨论了)
楼主说的 GIL 问题,既然是多进程的系统,那就不该考虑线程的问题了。既要维护大量的连接,又要做比较复杂的业务间的交互,能够单进程当然是最好的,毕竟多线程之间(或者协程并发)的交互是最方便的,但是 Python 做不了这个事情,楼主倒是可以考虑 Java ,如果一定要选择 Python ,那就只有多进程,分布式的方案了。
自己的见解,有不对的地方楼主还请指出来。自己用 python 做过可能跟楼主类似的东西,所以看到了帖子就多说了点。