Найти - Пользователи
Полная версия: twisted ошибка подключения,
Начало » Network » twisted ошибка подключения,
1
BM21
Подключаюсь к хосту вот так, порт этот закрыт. Но ошибки нету, и реактор не останавливается.

В коде соответсвенно пытаюсь подкл к порту 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()


Upd: По первому вопросу разобрался, причина была в функции error не тот аргумент в print передавал.
Теперь второй вопрос, этот же код почемуто вызывает и Errback и Callback. Хотя по логике должен только Errback вызыватся ?
bw
Всё правильно вызывает.
“def error(…)” у тебя не вовзращает ошибки (результат “None”) он как успех попадает в следующий “def callback(…)”.
В данном случае лучше делать: “d.addCallback(…).addErrback(…)”, “d.addCallbacks(…)” или в “def error(…)” добавь “return reason”.
Вместо “reactor.stop()” лучше сделай “reactor.callLater(0, reactor.stop)”.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB