Вы столкнулись с ошибкой, исправленной 3 года назад в Twisted 8.2.0 . Вам следует перейти на более свежую версию Twisted. (Я бы предложил недавно анонсированный предварительный выпуск Twisted 11.0 ; сейчас самое время протестировать!) Если вы обнаружили эту ошибку в более поздней версии Twisted, вам следует снова открыть эту ошибку и объяснить как это воспроизвести!
Если вам нужно поддерживать любую более старую версию Twisted, которую вы используете, вместо socket
, которая представляет собой случайно раскрытую деталь реализации вашей ITransport
реализации, вы должны использовать getHandle
, который является, по крайней мере, документированным , публичным способом получить доступ к этому зависящему от реализации материалу, как это:
self.xmlstream.transport.getHandle().getpeername()
Обратите внимание, что это не будет работать на некоторых реакторах, в частности, на реакторе IOCP, который использует что-то отличное от разъемов BSD для своей сетевой связи.
(Жан-Поль уже отметил большую часть этого в комментарии, но я чувствовал, что это должно появиться как ответ.)