停止ReconnectingClientFactory(XmlStreamFactory)

时间:2010-03-29 20:56:38

标签: twisted

我尝试使用这个提到的工厂编写一个XMPP客户端。现在我的程序在短时间内只需要这个连接。如何让工厂停止重新连接尝试?不幸的是,stopTrying不起作用。我以前是否必须断开正在运行的连接?

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分: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后,它将停止进行此类尝试。