我打算使用Unix命名pipe道(mkfifo)进行简单的多进程消息传递。 一条消息将只是一行文本。
你会劝阻我吗? 我应该期待什么障碍?
我注意到了这些限制:
我将在Python中实现消息传递。 但是障碍总的来说是成立的。
至于你的限制,
我发现perlipc是各种选项之间的一个很好的讨论,虽然它有Perl特定的代码。
发送方和接收方的阻塞都可以通过非阻塞I / O来解决。
FIFO的进一步限制:
我会使用UNIX域套接字 ,而没有上述限制。
作为一个额外的好处,如果你想扩展到多台机器之间的通信,几乎没有任何改变。 例如,只需将套接字上的Python文档页面替换为socket.AF_UNIX
,然后用socket.AF_INET
(HOST, PORT)
替换为filename
即可 。
SOCK_STREAM
会给你流类似的行为; 也就是说,两个发送可以合并成一个接收,反之亦然。 AF_UNIX
也支持SOCK_DGRAM
:数据报保证作为一个单元发送和读取,或根本不读取。 (类似地, AF_INET
+ SOCK_STREAM
= TCP, AF_INET
+ SOCK_DGRAM
= UDP。)