自定义Python Twisted协议:良好的实践和复杂性?

时间:2011-08-20 19:32:58

标签: python protocols twisted complexity-theory

我目前正致力于使用Twisted的Arduino型设备的控制系统,并且有一些设计问题

以下是目前的情况:(提前抱歉,可能会有点长)

  1. 处理不同类型的设备(每个设备具有不同的固件和通信协议)我有一个设计的“驱动程序”系统:
    • 每个司机由以下人员组成:
      • “硬件处理程序类”:Twsited的序列类的包装器,附带一些辅助方法
      • 自定义串行协议
  2. 2-同时为Reprap 3d打印机(也基于arduino,也使用串行连接)实现具有相当特定协议的驱动程序(即入队点,设置温度等),我已经开始怀疑我是否在正确的位置放置处理这些功能的方法(每个都有特定的命令)..

    这一切都引出了我的问题:

    就扭曲协议而言,我不太确定良好做法,但仔细查看了其中相当多的文档/代码,似乎它们往往只有相对较少的方法

    • 总是这样吗?协议是否应用于非常低级别的功能和进/出格式和通信?
    • 我想管理的某些设备有非常明确定义的协议(Makerbot等),我应该考虑一般协议规范与我创建的实际Twisted协议类不同吗?

    欢迎任何建议,提示和指示! 提前谢谢。

1 个答案:

答案 0 :(得分:3)

我会尽力回答一个非常普遍的问题。

1)构成Twisted协议的接口只有4种方法: http://twistedmatrix.com/documents/11.0.0/api/twisted.internet.interfaces.IProtocol.html 因此,这将是您的协议实现与Twisted之间的所有交互发生的地方。

2)除了协议实例之外,当然还有工厂生成协议实例(对于每个新连接)。因此,例如,应该可用于所有连接的内容(例如,当前连接的客户端数量,无论如何)自然存在于那里。

3)当然,构建小型层次结构可能是有意义的,您可以从协议派生,实现所有子协议共享的内容,然后仅在派生类中再次实现子协议细节。