0

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

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()
4

1 回答 1

1

正如您定义的那样,回调和 errback 都不可调用。

如果连接尝试成功,将执行等效的server_started(listeningPortObject, port)操作。这将失败,TypeError因为server_started被定义为采用三个参数(令人困惑的是,其中一个被命名self,这表明这实际上应该是一个类的方法,而不是一个自由函数)。

如果连接尝试失败,将执行等效的server_failed(reason, port)操作。这也将引发TypeError,因为server_failed还需要三个参数,而不是两个。

任何一个结果都会留下d一个未处理的TypeError等待另一个 errback 来处理它。

于 2013-06-20T19:09:26.380 回答