저는 파이썬에서 프로그램과 같은 프록시를 작성해야합니다. 작업 흐름은 웹 프록시와 매우 유사합니다. 이 프로그램은 클라이언트와 서버 사이에 위치하여 클라이언트가 서버로 보낸 요청을 수용하고 요청을 처리 한 다음 원래 서버로 보냅니다. 물론 사용되는 프로토콜은 개인 프로토콜이 TCP를 사용한다는 것입니다.믹스 파이썬 다중 처리로 비틀 었습니까?
노력을 최소화하기 위해 Python Twisted를 사용하여받는 요청 (이 부분이 서버 역할)과 재전송 (이 부분이 클라이언트 역할)을 처리하려고합니다.
성능을 극대화하려면 프로그램을 세 부분 (프로세스)으로 구분하는 파이썬 다중 처리 (스레딩에 GIL 제한 있음)를 사용하고 싶습니다. 첫 번째 프로세스는 Twisted를 실행하여 요청을 받고 큐에 요청을 보내고 즉시 원래 클라이언트로 성공을 반환합니다. 두 x 째 프로세스는 큐에서 요청을 가져오고 요청을 더 처리하여 다른 큐에 넣습니다. 세 번째 프로세스는 두 번째 큐에서 요청을 가져 와서 원래 서버로 보냅니다.
필자는 Python Twisted의 새로운 코너였습니다. 이벤트 중심이라는 것을 알고 있었고, Twisted와 스레딩 또는 멀티 프로세싱을 섞지 않는 것이 좋다고 들었습니다. 그래서 나는이 방법이 적절한지 또는 단지 Twisted를 사용하여 더 우아한 방법이 있는지 알지 못합니다.
을 나는 3 개 프로세스 대신 1 중복을 사용하여 생각한다. 첫 번째 프로세스와 마지막 프로세스는 CPU 바인딩 프로세스를 수행하지 않습니다 ... 단지 IO 바인딩입니다. 실제로 스레드를 전혀 사용하지 않고 비동기/이벤트 기반 논리만으로 모든 것을 단일 Twisted reactor 프로세스에 넣으면보다 유지 보수가 가능하고 성능이 향상됩니다. –