如何在 Twisted 框架中将连接成功或失败传递给调用者?
How to pass connection success or failure to the caller in the Twisted framework?
完成一些基本的 tutorials 后,我希望我的 TCP/UDP 客户端退出,并显示一个指示它是否已连接的代码。在 Twisted 中 return 退出代码的正确方法是:
point = TCP4ClientEndpoint(reactor, "localhost", 1234)
d = connectProtocol(point, ClientProtocol())
reactor.run()
sys.exit(0)
然后,当进程终止时,它将以代码 0 退出,以指示正常终止。如果客户端超时而不是成功连接,它应该如何将值传递回然后可以传递给 sys.exit 而不是常量 0?
通过关注 Deferred 的结果来确定 TCP 连接是成功还是失败:
d = connectProtocol(point, ClientProtocol())
d.addCallbacks(
connected,
did_not_connect,
)
通过 connected
和 did_not_connect
的适当实施,您应该能够将合适的值传递给后续 sys.exit
调用。
例如,
class Main(object):
result = 1
def connected(self, passthrough):
self.result = 0
return passthrough
def did_not_connect(self, passthrough):
self.result = 2
return passthrough
def exit(self):
sys.exit(self.result)
main = Main()
d = connectProtocol(point, ClientProtocol())
d.addCallbacks(
main.connected,
main.did_not_connect,
)
reactor.run()
main.exit()
完成一些基本的 tutorials 后,我希望我的 TCP/UDP 客户端退出,并显示一个指示它是否已连接的代码。在 Twisted 中 return 退出代码的正确方法是:
point = TCP4ClientEndpoint(reactor, "localhost", 1234)
d = connectProtocol(point, ClientProtocol())
reactor.run()
sys.exit(0)
然后,当进程终止时,它将以代码 0 退出,以指示正常终止。如果客户端超时而不是成功连接,它应该如何将值传递回然后可以传递给 sys.exit 而不是常量 0?
通过关注 Deferred 的结果来确定 TCP 连接是成功还是失败:
d = connectProtocol(point, ClientProtocol())
d.addCallbacks(
connected,
did_not_connect,
)
通过 connected
和 did_not_connect
的适当实施,您应该能够将合适的值传递给后续 sys.exit
调用。
例如,
class Main(object):
result = 1
def connected(self, passthrough):
self.result = 0
return passthrough
def did_not_connect(self, passthrough):
self.result = 2
return passthrough
def exit(self):
sys.exit(self.result)
main = Main()
d = connectProtocol(point, ClientProtocol())
d.addCallbacks(
main.connected,
main.did_not_connect,
)
reactor.run()
main.exit()