Обработка ситуации потери соединения в Twisted

Доброго времени суток! Проблема заключается в том, что у меня не получается обработать ситуацию потери соединения.
Объясню на конкретном примере. Подключаю аккаунт к джаббер серверу и начинаю его пинговать (wokkel.ping), на посылку пинга добавляю errback в котором ловится ConnectionLost. Далее отрубаю интернет, пинги продолжают идти и ConnectionLost не ловится. Принудительно закрываю соединение и далее обрабатываются все ранее необработанные исключения. Примерно вот так:


Пингуется нормально.
[XmlStream,client] Ping to JID(u'jabber.ru') started at HivemindPingClientProtocol
[-] SEND: «iq to='jabber.ru' type='get' id='H_3'>/>»
[XmlStream,client] RECV: "/><feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>"

Вырубил интернет.
[-] SEND: «iq to='jabber.ru' type='get' id='H_6'>/>»
[-] SEND: «iq to='jabber.ru' type='get' id='H_7'>/>
»

ConnectionLost не ловится, принудительно закрываю соединение. Stream closed at HivemindXMPPClient печатается в классе StreamManager в методе _disconnected
[-] Protocol stopped
[-] Protocol closed
[-] Transport stopped
[XmlStream,client] Stream closed at HivemindXMPPClient


Все исключения обрабатываются после закрытия соединения.
[XmlStream,client] Failure [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionLost'>: Connection to the other side was lost in a non-clean fashion.
[XmlStream,client] Failure [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionLost'>: Connection to the other side was lost in a non-clean fashion.]
[XmlStream,client] Connection lost with [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionDone'>: Connection was closed cleanly.]
[XmlStream,client] Stopping factory <hivemind.network.network_core.HivemindXmlStreamFactory object at 0xa2e904c>>


Кто нибудь сталкивался с такой ситуацией? Что я делаю не так? На самом деле я пытаюсь обработать это исключение, чтобы сделать реконнект (разрыв соединения + фабрика начинает реконнект). Помогите, пожалуйста, с реконнектом.
  • Вопрос задан
  • 3748 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы