我希望能够从现有的事件循环/反应器中生成一个独立的事件循环/反应器。假设我在模块中有一个应用程序standaloneapps
:
#in standaloneapps.py
class StandaloneApp(ApplicationSession):
def runner(self, message):
print(message)
@inlineCallbacks
def start_app(self):
yield self.subscribe(self.runner, 'com.example.some_topic')
我希望能够从另一个应用程序启动此应用程序。例子:
from standaloneapps import StandaloneApp
class ApplicationStarter(ApplicationSession):
@inlineCallbacks
def onJoin(self, details):
yield self.subscribe(self.start_app, 'com.example.startapp')
def start_app(self, message):
print('subscribing to app')
new_runner = ApplicationRunner(url="ws://127.0.0.1:8080/ws",
realm="realm1")
runner.run(StandaloneApp)
我可以开始ApplicationStarter
,但是一旦我发布事件,'com.example.startapp'
横杆就会崩溃并出现异常builtins.Exception: not joined
。
也许这似乎是一个过于复杂的设置,但我试图让一个应用程序订阅一个“应用程序调度程序”,它可以动态启动可能提前知道或不知道的新应用程序。我希望新应用程序在不同的事件循环上运行以保持隔离。