扭曲-为什么TCP4ServerEndpoint的回调和errback永不触发?

无论是否成功侦听,都不会调用回调。这里发生了什么?


def server_started(self, data, port):

    log.msg("Server listening on port %s." % (port))


def server_failed(self, data, port):

    log.err("Failed to listen on port %s." % (port), data)

    reactor.stop()


log.startLogging(sys.stdout)


port = 6000

endpoint = TCP4ServerEndpoint(reactor, port)

d = endpoint.listen(MyFactory())

d.addCallback(server_started, port)

d.addErrback(server_failed, port)

reactor.run()


慕的地8271018
浏览 153回答 1
1回答

汪汪一只猫

定义回调和回调后,它们均不可调用。如果连接尝试成功,server_started(listeningPortObject, port)将完成的等效操作。这将失败,TypeError因为server_started定义为接受三个参数(令人困惑的是,其中一个被命名self,这表明它实际上应该是类的方法,而不是自由函数)。如果连接尝试失败,则将进行等效的server_failed(reason, port)操作。这也会引起问题,TypeError因为server_failed还需要三个参数,而不是两个参数。任一种结果都将留下d未处理的状态,TypeError等待另一个错误处理。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python