Врисованные рекордактифицированныеClientfactory - автоматическое подключение или явный разъем вызова .Connect ()?
-
21-12-2019 - |
Вопрос
При использовании скрученного рекордактированияClientFactory и подключение теряется, мне нужно позвонить в Connector.connect () из метода ClientConnectionLost или это происходит автоматически?
Ответ может показаться очевидным, потому что в конце концов, в конце концов, рекордированиеClientFactory , но витая документация говорит что-то Вот , что мне интересно:
"Это может быть полезно вызовите разъем .Connect () - это будет воссоединиться."
Формулировка и использование термина «могут быть полезными» приводят к вопросу, поскольку документ API для базовой клиентской фабрики говорит одно и то же.
Ответ Макса правильный, но после дальнейших исследований я думаю, что ответ «корректор», как показано ниже:
def clientConnectionLost(self, connector, reason):
# do stuff here that is unique to your own requirements, then:
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
.
Это позволяет делать специальные вещи, необходимые по вашему приложению, а затем звоните в заводской код, чтобы позволить скрученным, чтобы позаботиться о вызове RETRY () для вас.
Решение
Мой старый ответ не был полностью правильным.Вместо этого делаем это:
.def clientConnectionLost(self, connector, reason): # do stuff here that is unique to your own requirements, then: ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
Это позволяет вам делать специализированные вещи, необходимые для вашего приложения и затем позвоните в заводской код, чтобы позволить скручиваться, чтобы позаботиться о призывая повторить () для вас.
Другие советы
Вызов ReconnectingClientFactory.clientConnectionLost (Self, разъем, причина) - это правильная вещь, как оно:
- проверяет "self.continuetrying" перед вызовом self.retry (который ключ, поскольку связь может быть потеряно из-за вызова «Остановка ()»
- устанавливает self.connector к разъему.
- звонит self.retry () (который из-за отсутствия прошедшего разъема использует self.connector, установленный в # 2).
- И если есть изменения в реализации рекордектированияClientfactory в будущем, которые потребуются больше действий в пути переподключения, они будут обрабатываться автоматически без изменений кода.