I'm writing application that uses python Twisted API (namely WebSocketClientProtocol, WebSocketClientFactory, ReconnectiongClientFactory
. I want to wrap client factory into reader with following interface
class Reader:
def start(self):
pass
def stop(self):
pass
Start function will be used to open connection (i.e. connect on ws api and start reading data), while stop
will stop such connection.
My issue is that if I use reactor.run()
inside start
, connection starts and everything is OK, but my code never goes pass that line (looks like blocking call to me) and I cannot execute subsequent lines (include .stop
in my tests).
I have tried using variants such as reactor.callFromThread(reactor.run)
and reactor.callFromThread(reactor.stop)
or even excplicity calling Thread(target=...)
but none seems to work (they usually don't build protocol or open connection at all).
Any help or guidelines on how to implement Reader.start
and Reader.stop
are welcome.