2013-09-29 4 views
1

간단한 질문이 있습니다. 이미 비슷한 질문을 한 것이 아닙니다.네트워크를 통해 문자열 보내기

두 개의 프로세스가 send() 및 receive() 함수를 사용하여 문자열 (메시지)을 서로 보냅니다. 여기에 기본 예제 :

# Process 1 
# ... deal with sockets, connect to process 2 ... 
msg = 'An arbitrarily long string\nMaybe with line breaks' 
conn.send(msg) 
msg = conn.receive() 
if process1(msg): 
    conn.send('ok') 
else: 
    conn.send('nok') 

# Process 2 
# ... deal with sockets, connect to process 1 ... 
msg = conn.receive() 
conn.send(process2(msg)) 
msg = conn.receive() 
if msg == 'ok': 
    print('Success') 
elif msg == 'nok': 
    print('Failure') 
else: 
    print('Protocol error') 

내가 그것을 베어 스트림 소켓 매우 쉽게 알고 있지만, 그건 내부 ((여러 conn.recv을) 경향이 여전히 복잡하고 오류 발생 HTTP 등의 크기 또는 SMTP와 같은 스트림 마커의 종료 여부 등)를 확인하십시오.

그런데 모든 크기의 메시지가 네트워크를 통해 효율적으로 전달 될 수있는 한 반드시 소켓을 사용할 필요는 없습니다.

내가 잘못 했나요? 거기에 간단한 라이브러리가 없습니까 (Twisted AMP는 단순 해 보이지 않습니다). 나는 성공없이 몇 시간 동안 인터넷을 검색 해왔다.

답변

1

ZeroMQ을 사용할 수있다. 훌륭한 파이썬 바인딩 인 pyzmq이있다. 메시지 큐의 개념 인 을 기반으로 모든 종류의 분산 된 소프트웨어를 작성하기위한 라이브러리입니다. 프로젝트는 최근에 과장된 반응을 보였습니다. 수많은 예제와 웹에서 자습서를 찾을 수 있습니다.

+0

정확히 내가 필요한 것, 감사합니다! 다음은이 질문을 보는 모든 사람들이 사용할 문서입니다. https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/patterns/pair.html – bbc

관련 문제