跨多个进程处理 websocket 客户端
我有一个用Python的Tornado框架实现的WebSocket功能,它在单个Tornado进程中运行得很好。不过,我现在遇到一个问题,就是无法在多个进程之间保持WebSocket客户端的连接。
目前,我是把客户端实例添加到一个模块的字典对象里,但这个字典在其他进程中不太好访问。
那么,怎样才能在Python(更具体来说,是Tornado)中让一个类的实例在多个进程之间保持呢?
1 个回答
0
你不应该尝试在不同的进程之间共享对象。直接别这么做。
如果你的情况是某个进程因为某种原因停止了,那么让客户端处理这个关闭的情况,重新连接就行了。连接会自动转到另一个正在运行的Tornado进程。
如果你想和其他Tornado进程共享消息,那就想想你的网络结构:你可以把消息发送给一个新的父节点,然后这个节点会把消息分发回所有的Tornado实例(包括最初的那个Tornado进程)。
ZMQ库和文档是很棒的资源,可以给你一些灵感。