2013-09-29 5 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, есть отличная привязка Python под названием pyzmq. Это библиотека для написания всех видов распределенного программного обеспечения, основанная на концепции очередей сообщений . В последнее время проект получил много шумихи, и вы найдете множество примеров и учебников в Интернете.

+0

То, что мне нужно, спасибо! Вот документ, который, я думаю, я буду использовать (для тех, кто видит этот вопрос): https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/patterns/pair.html – bbc

Смежные вопросы