2013-12-18 181 views
1

我有一個扭曲的TCP客戶端,我想定期導致連接,接收日期爲n秒的流,然後斷開連接。 在過程重新開始之前將斷開連接n秒後。扭曲 - 我需要定期連接/斷開客戶端連接

下面是我到目前爲止試過的代碼的一個非常簡短的摘錄。 當我運行的代碼reactor.stop()被髮出,並且睡眠過去之後,我收到了twisted.internet錯誤「ReactorAlreadyRunning」當reactor.run()在startClientConnection(被調用)

我一個原始新手使用扭曲,我不知道我做錯了什麼。任何幫助都感激不盡。

class TCPClientFactory(ReconnectingClientFactory) 
    def startedConnecting(self, connector): 
     pass 

    def buildProtocol(self, addr): 
     self.resetDelay() 
     return MsgProcessor() 

    def clientConnectionLost(self, connector, reason): 
     ReconnectingClientFactory.clientConnectionLost(self, connector, reason) 

    def clientConnectionFailed(self, connector, reason): 
     ReconnectingClientFactory.clientConnectionFailed(self, connector, reason)   


class mainClass(object): 
    def __init__(self): 
     ... 

    def startClientConnection(self): 
     reactor.connectTCP(host, port, TCPClientFactory()) 
     reactor.callLater(60, self.periodic_connect_manager) 
     reactor.run() 

    def periodic_connect_manager(self): 
     reactor.stop() 
     time.sleep(60) 
     self.startClientConnection() 

回答

2

reactor.run()應該只運行一次。

from twisted.internet import task, reactor 

def connect(): 
    do_connect() 
    reactor.callLater(60, disconnect) # disconnect in a minute 

task.LoopingCall(connect).start(120) # call connect() every 2 minutes 
reactor.run() 
+0

謝謝J.F.這聽起來正是我所需要的。 – RoyHB

相關問題