我正在编写使用pythontwistedapi(即WebSocketClientProtocol, WebSocketClientFactory, ReconnectiongClientFactory
)的应用程序。我想用下面的接口将客户机工厂包装到阅读器中
class Reader:
def start(self):
pass
def stop(self):
pass
Start函数将用于打开连接(即在ws-api上连接并开始读取数据),而stop
将停止这种连接。在
我的问题是,如果我在start
内使用reactor.run()
,连接将启动,一切正常,但我的代码永远不会通过该行(看起来像是阻塞对我的调用),并且我不能执行后续的行(在我的测试中包括.stop
)。在
我尝试过使用诸如reactor.callFromThread(reactor.run)
和reactor.callFromThread(reactor.stop)
或者甚至是excplicity调用Thread(target=...)
的变体,但似乎都不起作用(它们通常根本不构建协议或打开连接)。在
欢迎提供有关如何实现Reader.start
和Reader.stop
的任何帮助或指导。在
如果您将}将是一个很难与其他代码一起使用的组件。你的困难只是第一个症状。在
reactor.run
放在Reader.start
中,那么{调用
reactor.run
和reactor.stop
是负责管理应用程序生命周期的代码工作。将这些调用与WebSocket应用程序代码分开放置。例如:或者更好的方法是实现a twist(d) plugin,让twist(d)为您管理反应堆。在
相关问题 更多 >
编程相关推荐