1

我有一个高速公路客户端,它使用高速公路上的 ApplicationRunner 类连接到 WAMP 路由器(交叉开关)。在主要部分中,它附加了我的 ApplicationSession 类“REScheduler”,如下所示:

if __name__ == '__main__':
    from autobahn.twisted.wamp import ApplicationRunner

    runner = ApplicationRunner(url=u"ws://localhost:8080/ws", realm=u"RE_acct")

    runner.run(REScheduler, start_reactor=True, auto_reconnect=True)

现在我还需要应用程序运行器为其他目的启动的反应器。比如调用 some reactor.callLater(...)。我怎样才能访问这个反应堆。我在文档中没有找到任何东西。

4

1 回答 1

2

Twisted(可悲)使用(进程)全局反应器对象。这意味着,一旦选择了一个反应器(ApplicationRunner如果你设置了它start_reactor=True),只需在你的代码中你需要它from twisted.internet import reactor的地方做一个。

asyncio 已经正确封装了事件循环(您可以在一个进程中拥有多个事件循环)。

txaio 提供了一种适用于两者的便捷方法(它将公开 Twisted 中的单个全局反应器,并将公开 ApplicationRunner 在其下启动的事件循环):txaio.config.loop = reactor

于 2016-09-30T13:38:17.463 回答