2011-10-26 1 views
1

동일한 이벤트 루프에서 Asyncore.dispatcher 및 SimpleXMLRPCServer 이벤트를 처리하려면 어떻게합니까?동일한 이벤트 루프에서 SimpleXMLRPCServer 호출과 Asyncore.dispatchers 이벤트를 처리하십시오.

P. Twisted의 문제는 내 요구를위한 너무 높은 수준의 라이브러리라는 것입니다. 특히 타이머에 의존하는 Asyncore.dispatcher.writable() 메서드를 재정 의하여 UDP 흐름 제어를 수행하고 있습니다. Twisted에서 이것이 가능할 수 있는지/확실하지 않습니다.

답변

1

이 경우 Twisted를 사용해야합니다 .-). 비동기식 루프에 SimpleXMLRPCServer을 넣을 수 없습니다. 그것은 동기 코드입니다.

UDP를 사용하는 경우에도 Twisted를 통한 흐름 제어가 쉽습니다. writable()과 같은 메서드를 재정의하는 대신 DatagramProtocoltransport 특성에서 stopReading/stopWriting/startReading/startWriting과 같은 메서드를 호출 할 수 있습니다. 이 방법들은 here에서 볼 수 있습니다.

+0

SimpleXMLRPCServer는 쓰기가 차단되는 동안 읽기 용으로 비동기 IO를 사용합니다. 어쨌든 Twisted는 고수준 라이브러리 인 것처럼 보이지만 저수준 asyncore에서와 같은 모든 작업을 수행 할 수 있습니다. 필자는 Twisted의 FileDescriptor를 상속 받아 낮은 수준의 IO 기능을 사용하거나 Twisted Prodcuers를 사용할 수 있다고 가정합니다. 후자의 옵션은 더 나은 해결책 인 것 같습니다. 감사. –