Python twisted—为什么TCP4ServerEndpoint';s回拨和回拨从不开火?
无论我们是否成功侦听,都不会调用回调。这是怎么回事Python twisted—为什么TCP4ServerEndpoint';s回拨和回拨从不开火?,python,twisted,Python,Twisted,无论我们是否成功侦听,都不会调用回调。这是怎么回事 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
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()
回调和errback都不可调用,正如您所定义的那样 如果连接尝试成功,将执行与服务器启动(ListingPortObject,port)等效的操作。这将失败,并出现
TypeError
,因为server\u started
被定义为接受三个参数(令人困惑的是,其中一个参数名为self
,这表明这实际上应该是类的方法,而不是自由函数)
如果连接尝试失败,将执行与服务器失败(原因、端口)等效的操作。这也会引发TypeError
,因为server\u失败
也需要三个参数,而不是两个
任何一种结果都会在d
中留下一个未处理的TypeError
等待另一个errback来处理它