2013-08-25 1 views
0

예를 들어, 나는 여러 종류의 핸들러를 가지고 있는데 그들은 요청으로 모두 socket object 핸들러를 처리하지만, 요청을 처리해야하므로 요청 데이터를 분석해야한다.하지만 데이터를 읽은 이후로 데이터 요청이 불완전한 것입니다. 거기에 다시 소켓으로 데이터를 이동하는 방법은 무엇입니까?

코드

이 설명 될 수 있습니다 :

def handle_request(request,client_address,server): 
    request_type = getType(request) 
    if request_type == 'typeA': 
     TypeAHandler(request,client_address,server) 
    elif request_type == 'typeB': 
     TypeBHandler(request,client_address,server) 
    elif request_type == 'typeC': 
     TypeCHandler(request,client_address,server) 
... 

요청을 요청의 데이터를 롤백 또는 복제하는 방법이있다, 그래서 난이 작업을 간단하게 수행 할 수 있습니까?

+0

이미 일부 데이터를 읽었는데, 다른 인수로 처리기에 전달하지 않는 이유는 무엇입니까? –

+0

그 데이터를 전달하는 인수가 없거나 모든 데이터를 다시 써야하고 그 중 일부를 수정할 수 없기 때문에 – user2003548

+0

모든 핸들러는 소켓 객체에서 데이터를 가져 오기 위해'recv' 및'recv_into'를 호출합니다 ? –

답변

3

Python은 덕 타이핑을 사용합니다. 이 소켓처럼 보이면 소켓으로 사용할 수 있습니다.

이미 읽은 데이터를 먼저 제공 한 다음 실제 소켓에서 나머지를 제공하는 사용자 정의 소켓 객체를 작성할 수 있습니다. 핸들러의 경우 모든 것이 투명 해 지므로 코드를 변경할 필요가 없습니다.

+0

나는이 문제에 대한 일반적인 해결책이라고 생각하지만 소켓 객체를 조롱하기 위해 모든 API를 작성하는 것은 너무 무겁다. IMO, 그 목표에 도달하는 모든 게으른 방법? – user2003548

+0

@ user2003548 개체 전체에서 두 가지 방법을 조롱해야합니다. 그게 거의 작동하지 않습니다. –

관련 문제