python - Twisted中的EventListener机制

标签 python design-patterns twisted

我只是想听听有关正确使用 Twisted 中的 EventListener/EventSubscription 提供程序的想法。大多数示例和扭曲的源通过具有相当硬耦合的特定方法来处理事件。这些事件的调度目标方法被“硬编码”在特定的协议(protocol)类中,然后继承类有责任重写这些方法以接收“事件”。这是非常好的和透明的使用,因为我们在创建协议(protocol)时知道所有潜在的订阅者。 然而,在较大的项目中,需要(也许我的心态是错误的)更动态的事件订阅和订阅删除:想象数百个生命周期为一分钟的对象,它们都对同一事件感兴趣。 根据“扭曲的方式”实现这一目标的正确方法是什么?我目前已经创建了一个事件订阅/调度机制,但是有一个挥之不去的想法,即扭曲库中缺乏这种模式可能表明有更好的方法。

最佳答案

Twisted有一个包“twisted.words.xish.utility.EventDispatcher”,pydoc就知道用法了,很简单。然而,我认为Twisted的强大之处在于它的“延迟”。您可以将 Deferred 对象视为相关事件(正常,失败)的闭包,回调,回退都是注册观察者函数。 Deferred 具有高级功能,例如可以嵌套。 所以在我看来,你可以使用 Twisted 中默认的 EventDispatcher,或者发明一些简单的新功能。但如果你在Twisted中引入一些复杂的机制,它注定会导致困惑和困惑。

关于python - Twisted中的EventListener机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10223003/

相关文章:

python - 扭曲应用程序的 Web 界面

python - django-mailer 尝试发送邮件时出错

python - django:控制json序列化

java - 如何避免使用领域驱动设计拥有非常大的对象

python - 使用 MSN 协议(protocol)运行 twins.words 示例时出现异常

python - 扭曲的插件日志记录

python - newrelic 和 zope 出错

python - Openpyxl:似乎无法获得适合我想要做的事情的语法(向下阅读下一个单元格)

c# - 不违反 DRY 原则的两个不同的继承链

design-patterns - 公司和联系人 对象设计帮助