我计划使用Unix命名管道(mkfifo)进行简单的多进程消息传递。 消息只是一行文字。
你会劝阻我吗?我应该期待什么障碍?我注意到了这些限制:
我将在Python中实现消息传递。但总体上存在障碍。
答案 0 :(得分:5)
答案 1 :(得分:3)
发送方和接收方的阻塞都可以通过非阻塞I / O解决。
FIFO的进一步限制:
我会使用UNIX domain sockets代替,但没有上述限制。
作为一个额外的好处,如果你想扩展它以在多台机器之间进行通信,它几乎没有任何变化。例如,只需访问socket上的Python文档页面,将socket.AF_INET
替换为socket.AF_UNIX
,将(HOST, PORT)
替换为filename
,就可以正常工作
SOCK_STREAM
会给你流式行为;也就是说,两个发送可以合并为一个接收,反之亦然。 AF_UNIX
也支持SOCK_DGRAM
:数据报保证作为一个单元发送和读取,或者根本不发送。 (类似地,AF_INET
+ SOCK_STREAM
= TCP,AF_INET
+ SOCK_DGRAM
= UDP。)