2013-12-20 5 views
1

트위스트 프레임 워크로 TCP 프록시를 작성 중이며 간단한 클라이언트 장애 조치가 필요합니다. 프록시가 하나의 백엔드에 연결할 수없는 경우 목록의 다음 연결에 연결합니다. 이 작업을 수행 할 때까지 프록시에 reactor.connectTCP(host, port, factory)을 사용했지만 연결할 수없는 경우 오류가 발생하지 않습니다. 다른 호스트에 연결하고 시도 할 수 없으며 다른 연결 방법을 사용해야합니까?파이썬 트위스트 클라이언트 연결 페일 오버

+0

죄송합니다. 마지막으로 답변을 찾았습니다. http://stackoverflow.com/questions/14255289/twisted-reconnectingclientfactory-connection-to-different-servers –

답변

0

당신은 그렇지 않으면 인쇄 기능을 고토, A는 첫 번째가 실패 할 경우

class MyClientFactory(ClientFactory): 

    protocol = ClientProtocol 

    def __init__(self, request): 
     self.request = request 
     self.deferred = defer.Deferred() 

    def handleReply(self, command, reply): 
     # Handle the reply 
     self.deferred.callback(0) 

    def clientConnectionFailed(self, connector, reason): 
     self.deferred.errback(reason) 

def send(_, host, port, msg): 
    factory = MyClientFactory(msg) 
    reactor.connectTCP(host, port, factory) 
    return factory.deferred 

d = Deferred() 
d.addErrback(send, host1, port1, msg1) 
d.addErrback(send, host2, port2, msg2) 
# ... 
d.addBoth(lambda _: print "finished") 

이 다음 errback를 트리거 그렇게하는 연기 사용할 수 있습니다.

관련 문제