1

これは簡単な質問ですが、似たような質問にまだ出会っていないことに驚いています。

send() および receive() 関数を使用して、2 つのプロセスが相互に文字列 (メッセージ) を送信するようにしたいと考えています。基本的な例を次に示します。

# 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を使用できます。 pyzmqと呼ばれる優れた Python バインディングがあります。メッセージ キューの概念に基づいて、あらゆる種類の分散ソフトウェアを作成するためのライブラリです。このプロジェクトは最近大々的に宣伝されており、ウェブ上には数多くの例とチュートリアルがあります。

于 2013-09-29T20:29:05.830 に答える