Python & Autobahn with Twisted:在 ReconnectingClientFactory 中重置 maxRetries
Python & Autobahn with Twisted: reset maxRetries within ReconnectingClientFactory
我正在尝试重新连接客户端,如果由于某种原因连接是 'broken' 使用 Python & Autobahn with 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 个并且连接成功后数字不是 'reset'。
如何实现,这意味着在成功连接后将 maxRetries 重置为 5 - 如果可能的话?
谢谢!
科斯塔斯
安排您的协议在成功连接后调用 ReconnectingClientFactory.resetDelay
。这会重置所有内容,因此退避逻辑会重新开始。
要求应用程序调用此方法而不是自动重置状态,因为即使 TCP 连接成功,您仍然可能遇到需要退避重试的连接问题。例如,服务器可能会用 "too busy, try again later" 消息响应您的身份验证尝试。如果在您的协议中可能会发生这些事情,您应该在 发生这些事情的可能性已经过去之后 resetDelay
调用 。 ReconnectingClientFactory
不知道什么时候就这样了。
我正在尝试重新连接客户端,如果由于某种原因连接是 'broken' 使用 Python & Autobahn with 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 个并且连接成功后数字不是 'reset'。
如何实现,这意味着在成功连接后将 maxRetries 重置为 5 - 如果可能的话?
谢谢!
科斯塔斯
安排您的协议在成功连接后调用 ReconnectingClientFactory.resetDelay
。这会重置所有内容,因此退避逻辑会重新开始。
要求应用程序调用此方法而不是自动重置状态,因为即使 TCP 连接成功,您仍然可能遇到需要退避重试的连接问题。例如,服务器可能会用 "too busy, try again later" 消息响应您的身份验证尝试。如果在您的协议中可能会发生这些事情,您应该在 发生这些事情的可能性已经过去之后 resetDelay
调用 。 ReconnectingClientFactory
不知道什么时候就这样了。