2010-03-29 18 views
2

我試圖用這個工廠編寫一個XMPP客戶端。現在我的程序在短時間內只需要這個連接。我如何讓工廠停止重新連接嘗試?不幸的是stopTrying不起作用。我必須在斷開連接之前斷開連接嗎?停止ReconnectingClientFactory(XmlStreamFactory)

任何幫助,將不勝感激:)

回答

3

ReconnectingClientFactory.stopTrying確實工作。任何時候你有這樣的問題,你都不應該說「不行」。你應該解釋你的期望,給出你正在嘗試的代碼的一個簡單例子,並解釋它的行爲與你的期望有什麼不同。

對於這種情況,這裏是它演示瞭如何stopTrying符合我的預期,這是它被稱爲後,沒有進一步將努力建立連接的例子:

from twisted.internet.protocol import ReconnectingClientFactory 
from twisted.internet import reactor 
from twisted.python.log import startLogging 
from sys import stdout 

def main(): 
    startLogging(stdout) 
    f = ReconnectingClientFactory() 
    reactor.callLater(10, f.stopTrying) 
    reactor.connectTCP('localhost', 12345, f) 
    reactor.run() 

if __name__ == '__main__': 
    main() 

,這將永遠運行,但在其運行的前10秒內,它將進行新的連接嘗試(全部失敗)。在調用stopTrying後,它將停止進行此類嘗試。