两个Python程序之间的进程间消息传递

4 投票
3 回答
2156 浏览
提问于 2025-04-16 18:18

我们有两个在Linux服务器上运行的Python程序。现在我们想让这两个程序之间能够发送消息。目前我们想到的最好办法是建立一个TCP/IP的服务器和客户端架构,但这听起来似乎有点复杂。这样做真的是最佳实践吗?

3 个回答

0

你可以使用一个叫做 multiprocessing.managers 的东西。文档上说:“一个管理器对象控制一个服务器进程,这个进程管理共享的对象。其他进程可以通过代理来访问这些共享对象。”

在你的情况下,你可以创建一个主进程来控制其他进程,每个进程都会向主进程请求数据。

3

这其实要看你想要什么样的消息传递方式,以及这两个程序各自的角色。如果是标准的“客户端/服务器”模式,我可能会创建一个 SimpleHTTPServer,然后用HTTP协议在它们之间进行交流。你也可以使用XMLRPCLib和客户端来进行沟通。自己手动创建一个TCP服务器,并设计一个自定义协议,我觉得这不是个好主意。你还可以考虑使用消息队列系统来进行它们之间的通信。

6

我喜欢用 zeromq 来进行简单的消息传递,它非常轻量级且快速...而且灵活性也很高。根据你的具体情况,使用 AMQP 消息传递也不是个坏主意,我发现 kombu 是一个非常不错的 Python 库,使用起来很顺手。你还可以使用 xmlrpclib,或者用 bottleflask 来搭建一个简单的 REST API。每种选择都有它的适用场景,所以我建议你多了解一下所有的选项。

撰写回答