我在模块中有一个ReconnectingClientFactory。我希望模块尽可能灵活。我只需要一个单独的TCP连接。我使用工厂作为此连接的持续接口。在过去,工厂会通过无休止地重试连接来响应断开连接,而不会通知顶级脚本(导入模块的脚本)存在连接问题。如何设计扭曲的工厂来处理断开连接?
这里是什么,我有一个简单的例子:
Factory(protocol.ReconnectingClientFactory):
def clientConnectionFailed(self, connector, reason):
...
def clientConnectionLost(self, connector, reason):
...
我认为这是最好的,如果我告诉了顶级脚本(即导入模块脚本)时存在连接问题。通过这种方式,顶层脚本可以定义断开连接解析行为,而不是全部在模块中进行硬编码。但是,将连接问题传达给顶层脚本的最佳方式是什么?
我可以举一个例外,但它会被捕获到什么地方?我想反应堆会抓住它,但这有什么帮助?
没有回调或errbacks我可以通知顶部脚本的连接问题。
顶部脚本可以提供特定的函数[作为参数]在连接问题发生时被调用。这是不错的设计吗?
这似乎是一个不完整的解决方案,因为它只提供了一种方式来处理失败的连接尝试,而不是丢失的连接。如何在没有协议协议的情况下处理丢失的连接? – 2011-03-27 13:44:54