启动和停止扭曲连接

2024-05-28 23:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写使用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.startReader.stop的任何帮助或指导。在


Tags: runself应用程序客户机defpassstartreader
1条回答
网友
1楼 · 发布于 2024-05-28 23:35:43

如果您将reactor.run放在Reader.start中,那么{}将是一个很难与其他代码一起使用的组件。你的困难只是第一个症状。在

调用reactor.runreactor.stop是负责管理应用程序生命周期的代码工作。将这些调用与WebSocket应用程序代码分开放置。例如:

r = Reader()
r.start()
reactor.run()

或者更好的方法是实现a twist(d) plugin,让twist(d)为您管理反应堆。在

相关问题 更多 >

    热门问题