问候,论坛。
我正在开发一个使用Twisted来管理网络的Python程序。该程序的基础是一个TCP服务,用于侦听多个端口上的连接。但是,我不是使用一个Twisted工厂来处理每个端口的协议对象,而是尝试为每个端口使用单独的工厂。这样做的原因是强制连接到不同端口的客户端组之间的分离。
不幸的是,看起来这个架构并不是很有效:连接到一个端口的客户端似乎在所有工厂中都可用(例如,每个工厂使用的协议类包括'self.factory.clients.append (self)'声明...而不是将给定的客户端仅添加到特定端口的工厂,客户端被添加到所有工厂),每当我在一个端口上关闭服务时,所有端口上的监听器也会停止。
我一直在与Twisted合作,担心我根本不完全了解其工厂类的管理方式。
我的问题是:是否根本不可能在不同的端口上使用相同工厂和相同协议的多个同时实例(没有这些实例踩在彼此的脚趾上)?
答案 0 :(得分:6)
你绝对可以做你想做的事情 - 如果没有看到你的代码就很难说出你做错了什么,但我敢打赌你工厂里有clients = []
而不是
self.clients = []
在工厂类的__init__
方法中。