これは簡単な質問ですが、似たような質問にまだ出会っていないことに驚いています。
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 は単純に見えません) はありませんか? 私は成功せずに数時間インターネットを検索してきました:)