Twisted中的多个同步工厂和协议:同一服务,不同端口

1 投票
1 回答
1815 浏览
提问于 2025-04-15 21:48

大家好,论坛的朋友们。

我正在用Python写一个程序,这个程序使用Twisted来管理网络连接。这个程序的核心是一个TCP服务,它需要在多个端口上监听连接。不过,我想为每个端口使用一个单独的工厂,而不是用一个Twisted工厂来处理每个端口的协议对象。这样做的目的是为了把连接到不同端口的客户端分开管理。

可惜的是,这种设计似乎没有达到预期的效果:连接到一个端口的客户端在所有工厂中都能被访问到(比如,每个工厂使用的协议类里有一个'self.factory.clients.append(self)'的语句……这意味着客户端被添加到了所有工厂里,而不仅仅是某个特定端口的工厂)。而且,每当我关闭一个端口的服务时,所有端口的监听器也会一起停止。

我刚开始接触Twisted,对它的工厂类是如何管理的还不是很明白。

我想问的是:在不同的端口上,是否根本不可能同时使用多个相同的工厂和协议实例,而不让这些实例互相干扰呢?

1 个回答

6
self.clients = []

你完全可以实现你想要的功能——不过光凭你的描述很难判断你哪里出错了,可能是因为你在工厂类里用了 clients = [],而不是在工厂类的 __init__ 方法里。

撰写回答