如何从高速公路Python中的ApplicationRunner获取反应器
How to get the reactor from ApplicationRunner in autobahnPython
我有一个高速公路客户端,它使用高速公路上的 ApplicationRunner class 连接到 WAMP 路由器(crossbar)。在主要部分中,它附加了我的 ApplicationSession class "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)
现在我还需要应用程序运行器为其他目的启动的反应堆。像例如打电话给一些 reactor.callLater(...)
。
我怎样才能访问这个反应堆。我没有在文档中找到任何内容。
Twisted(遗憾地)使用了一个(进程)全局反应器对象。这意味着,一旦选择了一个反应器(如果您设置 start_reactor=True
,ApplicationRunner
就会选择),只需在代码 的位置执行 from twisted.internet import reactor
在你需要的地方。
asyncio 对事件循环进行了适当的封装(一个进程中可以有多个事件循环)。
txaio provides a convenience method that will work on both (it will expose the single, global reactor in Twisted, and it will expose the event loop under which ApplicationRunner is started): txaio.config.loop = reactor
我有一个高速公路客户端,它使用高速公路上的 ApplicationRunner class 连接到 WAMP 路由器(crossbar)。在主要部分中,它附加了我的 ApplicationSession class "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)
现在我还需要应用程序运行器为其他目的启动的反应堆。像例如打电话给一些 reactor.callLater(...)
。
我怎样才能访问这个反应堆。我没有在文档中找到任何内容。
Twisted(遗憾地)使用了一个(进程)全局反应器对象。这意味着,一旦选择了一个反应器(如果您设置 start_reactor=True
,ApplicationRunner
就会选择),只需在代码 的位置执行 from twisted.internet import reactor
在你需要的地方。
asyncio 对事件循环进行了适当的封装(一个进程中可以有多个事件循环)。
txaio provides a convenience method that will work on both (it will expose the single, global reactor in Twisted, and it will expose the event loop under which ApplicationRunner is started):
txaio.config.loop = reactor