簡體   English   中英

在運行時添加/更改處理程序的通道

[英]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創建事件處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM