Несколько одновременных фабрик и протоколов в витой сети: один и тот же сервис, разные порты - PullRequest
1 голос
/ 20 апреля 2010

Привет, Форум.

Я работаю над программой на Python, которая использует Twisted для управления сетью. Основой этой программы является служба TCP, которая должна прослушивать соединения на нескольких портах. Однако вместо использования одной фабрики Twisted для обработки объекта протокола для каждого порта я пытаюсь использовать отдельную фабрику для каждого порта. Причина этого заключается в принудительном разделении групп клиентов, подключающихся к разным портам.

К сожалению, похоже, что эта архитектура не совсем работает: клиенты, которые подключаются к одному порту, по-видимому, доступны среди всех фабрик (например, класс протокола, используемый каждой фабрикой, включает «self.factory.clients.append»). (self) '... вместо того, чтобы добавлять определенного клиента только к фабрике для определенного порта, клиент добавляется ко всем фабрикам), и всякий раз, когда я закрываю службу на одном порту, слушатели на всех портах также останавливаются.

Я некоторое время работал с Twisted, и боюсь, что просто не до конца понимаю, как управляются его фабричные классы.

Мой вопрос таков: нельзя ли иметь несколько одновременных экземпляров одной и той же фабрики и одного и того же протокола на разных портах (без этих случаев, наступающих друг другу на пальцы)?

1 Ответ

6 голосов
/ 20 апреля 2010

Вы определенно можете делать то, что вы хотите - трудно понять, что вы делаете неправильно, не видя ваш код, но я бы поспорил, у вас есть clients = [] в вашем заводском классе вместо

self.clients = []

в методе __init__ вашего фабричного класса.

...