Я пишу приложение, которое использует python Twisted API (а именно WebSocketClientProtocol, WebSocketClientFactory, ReconnectiongClientFactory
. Я хочу обернуть клиентскую фабрику в ридер со следующим интерфейсом
class Reader:
def start(self):
pass
def stop(self):
pass
Функция Start будет использоваться для открытия соединения (т.е. подключения по ws api и начала чтения данных), а stop
остановит такое соединение.
Моя проблема в том, что если я использую reactor.run()
внутри start
, соединение начинается, и все в порядке, но мой код никогда не проходит эту строку (похоже на блокирующий вызов для меня), и я не могу выполнить последующие строки (включить .stop
в мои тесты).
Я пытался использовать такие варианты, как reactor.callFromThread(reactor.run)
и reactor.callFromThread(reactor.stop)
, или даже эксплицитный вызов Thread(target=...)
, но ни один из них не работает (обычно они вообще не строят протокол или не открывают соединение).
Любая помощь или рекомендации по реализации Reader.start
и Reader.stop
приветствуются.