gpt4 book ai didi

Python 与 Twisted 高速公路 : reset maxRetries within ReconnectingClientFactory

转载 作者:行者123 更新时间:2023-11-30 23:13:15 26 4
gpt4 key购买 nike

如果由于某种原因连接“断开”,我正在尝试使用 Python 和 Autobahn 与 Twisted 重新连接客户端。

有一个很好的例子 here使用 ReconnectingClientFactory 设置,但我的问题是围绕 maxRetries。

脚本执行过程中总共允许设置5种方式。

class EchoClientFactory(ReconnectingClientFactory, WebSocketClientFactory):
protocol = EchoClientProtocol
# http://twistedmatrix.com/documents/current/api/twisted.internet.protocol.ReconnectingClientFactory.html
#
maxDelay = 10
maxRetries = 5
def startedConnecting(self, connector):
print('Started to connect.')
def clientConnectionLost(self, connector, reason):
print('Lost connection. Reason: {}'.format(reason))
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
def clientConnectionFailed(self, connector, reason):
print('Connection failed. Reason: {}'.format(reason))
ReconnectingClientFactory.clientConnectionFailed(self, connector, reason)

例如,如果出现问题并且客户端在 2 次重试后连接,则只剩下 3 次,并且在成功连接后该号码不会“重置”。

如何实现这一点,即在成功连接后将 maxRetries 重置回 5 - 如果可能的话?

谢谢!

科斯塔斯

最佳答案

安排您的协议(protocol)在连接成功后调用 ReconnectingClientFactory.resetDelay。这会重置所有内容,以便退避逻辑重新开始。

要求应用程序调用此方法,而不是自动重置状态,因为即使 TCP 连接成功,您仍然可能遇到需要重试并回退的连接问题。例如,服务器可能会用“太忙,稍后再试”消息来响应您的身份验证尝试。如果这些事情可能在您的协议(protocol)中发生,您应该在这些事情发生的机会过去之后才调用 resetDelayReconnectingClientFactory 无法知道这是什么时候。

关于Python 与 Twisted 高速公路 : reset maxRetries within ReconnectingClientFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29445538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com