Форум сайта python.su
Подключаюсь к хосту вот так, порт этот закрыт. Но ошибки нету, и реактор не останавливается.
В коде соответсвенно пытаюсь подкл к порту 852 который закрыт, таймаут подкл. стоит 5 сек.
Не каких сообщений на экране.. Если прописать прописать открытый порт, то callback срабатывает почему так?
from twisted.internet import reactor from twisted.internet.protocol import Protocol, ClientFactory from twisted.internet.endpoints import TCP4ClientEndpoint HOST = '127.0.0.1' PORT = 852 class Factory(ClientFactory): def clientConnectionFailed(self, connector, reason): print "ConnectionError" reactor.stop() def buildProtocol(self, addr): return Protocol() def error(reason): print reason, "error" reactor.stop() def connected(connector): print "connected" reactor.stop() point = TCP4ClientEndpoint(reactor, HOST, PORT,5) d = point.connect(Factory()) d.addErrback(error) d.addCallback(connected) reactor.run()
Отредактировано BM21 (Сен. 17, 2018 10:36:23)
Офлайн
Всё правильно вызывает.
“def error(…)” у тебя не вовзращает ошибки (результат “None”) он как успех попадает в следующий “def callback(…)”.
В данном случае лучше делать: “d.addCallback(…).addErrback(…)”, “d.addCallbacks(…)” или в “def error(…)” добавь “return reason”.
Вместо “reactor.stop()” лучше сделай “reactor.callLater(0, reactor.stop)”.
Офлайн