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 看起来并不简单)可以做到这一点吗?我已经在互联网上搜索了几个小时但没有成功:)

4

1 回答 1

1

您可以使用ZeroMQ,有一个出色的 Python 绑定,称为pyzmq。它是一个用于编写各种分布式软件的库,基于消息队列的概念。该项目最近大肆宣传,您会在网上找到大量示例和教程。

于 2013-09-29T20:29:05.830 回答