Twisted中的多个同步工厂和协议:同一服务,不同端口
大家好,论坛的朋友们。
我正在用Python写一个程序,这个程序使用Twisted来管理网络连接。这个程序的核心是一个TCP服务,它需要在多个端口上监听连接。不过,我想为每个端口使用一个单独的工厂,而不是用一个Twisted工厂来处理每个端口的协议对象。这样做的目的是为了把连接到不同端口的客户端分开管理。
可惜的是,这种设计似乎没有达到预期的效果:连接到一个端口的客户端在所有工厂中都能被访问到(比如,每个工厂使用的协议类里有一个'self.factory.clients.append(self)'的语句……这意味着客户端被添加到了所有工厂里,而不仅仅是某个特定端口的工厂)。而且,每当我关闭一个端口的服务时,所有端口的监听器也会一起停止。
我刚开始接触Twisted,对它的工厂类是如何管理的还不是很明白。
我想问的是:在不同的端口上,是否根本不可能同时使用多个相同的工厂和协议实例,而不让这些实例互相干扰呢?
1 个回答
6
self.clients = []
你完全可以实现你想要的功能——不过光凭你的描述很难判断你哪里出错了,可能是因为你在工厂类里用了 clients = []
,而不是在工厂类的 __init__
方法里。