首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python扭曲的连续重新连接尝试

Python扭曲的连续重新连接尝试
EN

Stack Overflow用户
提问于 2018-08-01 06:47:11
回答 1查看 118关注 0票数 0

在尝试连接工厂时,如果连接失败,我希望它定期尝试重新连接。我用如下所示的代码尝试:

def reconnect():
    print("this sucks")
    reactor.connectTCP("localhost", 6667, factory2)

factory2 = pb.PBClientFactory()
factory2.clientConnectionFailed(reconnect(), "reasons")
reactor.connectTCP("localhost", 6667, factory2)

如果我运行这段代码,它只会打印"this sucks“一次,尽管再次调用了以factory2作为参数的connectTCP方法。我应该如何着手实现所需的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 08:25:14

clientConnectionFailed是在连接尝试失败时由工厂上的Twisted调用的方法。您的示例中的用法是无意义的。

有关一个解决方案,请参阅ReconnectingClientFactory

from twisted.internet.protocol import ReconnectingClientFactory
from twisted.internet import reactor

from yourlib import YourProtocol

factory = ReconnectingClientFactory()
factory.protocol = YourProtocol

reactor.connectTCP(host, port, factory)
reactor.run()

然而,由于使用自定义工厂类来支持PB,这并不能很好地与PB结合。这只是避免使用PB的众多原因之一。

最近引入的一种解决方案是ClientService

from twisted.application.internet import ClientService
from twisted.internet.endpoints import HostnameEndpoint

from yourlib import YourFactory

factory = YourFactory()

service = ClientService(
    HostnameEndpoint(reactor, host, port),
    YourFactory(),
)
service.startService()
reactor.run()

注意:为了简洁起见,我在这里跳过了正确的" service“用法;有关正确用法的详细信息,请参阅Twisted服务文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51623134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档