我正在尝试重新连接客户端,如果出于某种原因使用Python&高速公路扭曲。
使用ReconnectingClientFactory设置有一个很好的示例here但我的问题是围绕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 - 如果可能的话?
谢谢!
科斯塔斯
答案 0 :(得分:3)
安排协议在成功连接后呼叫ReconnectingClientFactory.resetDelay
。这会重置所有内容,以便退避逻辑重新开始。
要求应用程序调用此方法而不是自动重置状态,因为即使TCP连接成功,您仍可能存在值得重试的退出的连接问题。例如,服务器可能会响应您的身份验证尝试,并且太忙,请稍后重试"信息。如果您的协议中可能发生这类事情,那么您应该在{/ 1}} 发生之后将其发送给他们。 resetDelay
无法知道这是什么时候。