2010-04-20 2 views
1

Greetings, Forum.Twisted에서 다중, 동시 공장 및 프로토콜 : 동일한 서비스, 다른 포트

네트워킹을 관리하기 위해 Twisted를 사용하는 Python 프로그램을 만들고 있습니다. 이 프로그램의 기본은 여러 포트에서 연결을 수신 대기하는 TCP 서비스입니다. 그러나 각 포트에 대한 프로토콜 객체를 처리하기 위해 하나의 Twisted 팩토리를 사용하는 대신 각 포트에 별도의 팩토리를 사용하려고합니다. 그 이유는 다른 포트에 연결하는 클라이언트 그룹을 강제로 분리하기 위해서입니다.

아쉽게도이 아키텍처는 제대로 작동하지 않습니다. 한 포트에 연결하는 클라이언트는 모든 팩토리에서 사용할 수있는 것처럼 보입니다 (예 : 각 팩토리에서 사용되는 프로토콜 클래스에는 'self.factory.clients. append (self) '문 ... 특정 포트에 대한 팩토리에만 클라이언트를 추가하는 대신 클라이언트가 모든 팩토리에 추가됩니다. 그리고 한 포트에서 서비스를 종료 할 때마다 모든 포트의 리스너도 중지됩니다.

저는 Twisted와 잠시 일해 왔으며, 공장 클래스가 어떻게 관리되고 있는지 완전히 이해하지 못하는 것을 두려워합니다.

제 질문은 : 서로 다른 발가락을 밟지 않고 동일한 포트 팩트와 동일한 프로토콜을 사용하는 동일한 팩토리와 프로토콜을 동시에 여러 인스턴스에 동시에 사용할 수 있습니까?

답변

6

당신은 확실히 당신이 원하는 무엇을 할 수 - 당신이 코드를 보지 않고 잘못하고있는 것을 알 어렵다,하지만 난 당신이

self.clients = [] 

대신 팩토리 클래스에 clients = []이 셨을 ​​텐데요 공장 클래스의 __init__ 메소드.

+0

와우 - 나는 당신을 상대로 내기하고 싶지 않을 것입니다! 나를 잡아 내지 못하는 것은 얼마나 우스운 일인가. 'clients'목록 초기화를 공장의 __init__ 메소드로 옮기 자마자 전체 문제가 사라졌습니다. 답장을 보내 주셔서 감사합니다. – RichardCroasher

+1

그리고 언급하지 않기를 원할 것입니다. '__init__'에서 이것을 할 필요가있을 것입니다. –

관련 문제