我正在寻找一种简单方式将消息从一个进程(Perl脚本,短命)传递到另一个进程(Python脚本,长时间运行) - 这两个进程都是同一台机器的本地进程。 我已经做了一些研究,但我发现的要么是在我头上还是看起来不必要的复杂 - 让我有点迷茫和困惑。
我想象一个大致如下的最小例子:
# listener.py
class Listener:
def __init__(self, port)
self.port = port
def on_message(self, msg):
print "%s: %s" % (timestamp, msg)
recipient = Listener(1234)
# sender.pl
sub send_message {
my ($msg, $port) = @_;
# ...
}
send_message("hello world", 1234);
非常感谢任何有关如何解决和/或在何处阅读此内容的指示!
答案 0 :(得分:20)
事实证明,进程间通信虽然表面上很简单,但实际上却充满了复杂性。无论任何人在简单的答案方面告诉你什么,请记住,可能有很多警告没有说明。
现在有了免责声明,我声称您可能想要的是消息队列。这是基于您在示例api中未包含IP地址的事实。如果你需要穿越机器,你会需要套接字。但是,如果您能够处理这个仅用于与同一台机器上的进程通信的事实,我认为您会发现消息队列更容易理解。
perl的一个很好的起点是:
http://perldoc.perl.org/IPC/Msg.html
对于python,这似乎解释了(忽略其他类型的ipc,如信号量):
http://semanchuk.com/philip/sysv_ipc/
答案 1 :(得分:11)
对于与socket相同风格的通电通信,请考虑查看0MQ。它可以根据您的两个应用程序的位置使用不同的通信技术,甚至对于本地进程,它也非常易于使用并为您解决问题。
答案 2 :(得分:3)
一般来说,您对插座感兴趣。获取所需粗略信息的好地方是来自IO::Socket::INET
的perl perldoc perlipc或更多基本套接字内容的文档