Как спроектировать скрученную фабрику для обработки разъединений?

У меня есть ReconnectingClientFactory в модуле. Хотелось бы, чтобы модуль был максимально гибким. Мне нужно только одно TCP-соединение. Я использую фабрику как постоянный интерфейс для этого соединения. В прошлом фабрика реагировала на разъединения, бесконечно повторяя попытки подключения, никогда не сообщая сценарию верхнего уровня (сценарию, импортирующему модуль) о проблемах с подключением.

Вот краткий пример того, что у меня есть:

Factory(protocol.ReconnectingClientFactory):

    def clientConnectionFailed(self, connector, reason):
        ...

    def clientConnectionLost(self, connector, reason):
        ...

Я думаю это' Лучше всего, если я проинформирую сценарий верхнего уровня (сценарий, который импортирует модуль) о проблемах с подключением. Таким образом, сценарий верхнего уровня может определять поведение разрешения отключения, а не все это жестко запрограммировано в модуле. Но как лучше всего сообщить о проблемах с подключением скрипту верхнего уровня?

Я мог бы вызвать исключение, но где оно будет обнаружено? Я предполагаю, что реактор поймает это, но как это поможет?

Нет никаких обратных вызовов или ошибок, которые я могу запустить, чтобы проинформировать верхний сценарий о проблеме с подключением.

Верхний сценарий может предоставлять определенные функции [в качестве аргументов] для вызова при возникновении проблем с подключением. Но насколько хорош этот дизайн?

5
задан Buttons840 27 March 2011 в 03:33
поделиться