Add/Change 运行时处理程序的通道
Add/Change channel for handler at runtime
在电路 3.1.0 中,有没有办法在运行时为处理程序设置通道?
一个有用的替代方法是在运行时添加处理程序并指定通道。
我已经检查了 Manager.addHandler 实现,但无法使其工作。我试过了:
self._my_method.__func__.channel = _my_method_channel
self._my_method.__func__.names = ["event name"]
self.addHandler(self._my_method)
是的,有;然而它并不是真正公开的 API.
示例:(在运行时创建事件处理程序)
@handler("foo")
def on_foo(self):
return "Hello World!"
def test_addHandler():
m = Manager()
m.start()
m.addHandler(on_foo)
这取自tests.core.test_dynamic_handlers
注意: 每个 BaseComponent
/Component
子类也是 Manager
的子类并且具有 .addHandler()
和 .removeHandler()
方法。您还可以像这样动态设置 @handler()
:
def on_foo(...):
...
self.addHandler(handler("foo")(on_foo))
您还可以在库本身中看到一个 好的 示例,其中 circuits.io.process 我们在其中为 stdin、stdout 和 stderr 动态创建事件处理程序。
在电路 3.1.0 中,有没有办法在运行时为处理程序设置通道? 一个有用的替代方法是在运行时添加处理程序并指定通道。
我已经检查了 Manager.addHandler 实现,但无法使其工作。我试过了:
self._my_method.__func__.channel = _my_method_channel
self._my_method.__func__.names = ["event name"]
self.addHandler(self._my_method)
是的,有;然而它并不是真正公开的 API.
示例:(在运行时创建事件处理程序)
@handler("foo")
def on_foo(self):
return "Hello World!"
def test_addHandler():
m = Manager()
m.start()
m.addHandler(on_foo)
这取自tests.core.test_dynamic_handlers
注意: 每个 BaseComponent
/Component
子类也是 Manager
的子类并且具有 .addHandler()
和 .removeHandler()
方法。您还可以像这样动态设置 @handler()
:
def on_foo(...):
...
self.addHandler(handler("foo")(on_foo))
您还可以在库本身中看到一个 好的 示例,其中 circuits.io.process 我们在其中为 stdin、stdout 和 stderr 动态创建事件处理程序。