Twisted reactor.listenTCP间歇性地无法正常连接

时间:2014-01-22 23:45:56

标签: sockets twisted twisted.internet

我正在使用reactor.listenTCP在linux上运行TCP服务器。

一切都运行好几个小时(或几天),然后发生了一些事情,客户端可以连接,但服务器会立即将它们断开连接。

我的协议实现中没有任何命令断开连接。 客户端实现中没有任何内容会导致这种断开。

服务器使用sendLine(数据)间歇性地向用户列表中找到的所有用户发送一些数据。

我想知道当客户端断开连接时我是否打算执行某些操作我错过了这会导致套接字问题。

class MsgHandler(Protocol):
    def __init__(self, factory):
        self.factory = factory
    def connectionMade(self):
        self.factory.users.append(self)
    def connectionLost(self, reason):
        self.factory.users.remove(self)
    def dataReceived(self, data):
        pass

class outputTcpServerFactory(Factory):
    def __init__(self, users):
        self.users = users
    def buildProtocol(self, addr):
        return MsgHandler(self) 

class Mainloop(object):
    def __init__(self):
        self.users = []
        s = reactor.listenTCP(port, outputTcpServerFactory(self.users))
        reactor.run()

---> mainLoop类中的其他地方是定期运行的代码:

for client in self.users:
    client.sendLine(data)

1 个答案:

答案 0 :(得分:1)

您应始终enable logging,以便可以看到应用程序遇到的未处理的异常。这些通常可以说明为什么有些东西被打破了。