Python进程间通信建议

2 投票
3 回答
1889 浏览
提问于 2025-04-17 07:08

我有两个独立运行的Python服务器,它们共享同一个数据库。这两个服务器需要相互沟通,告诉对方数据库里什么时候发生了某些变化,这样另一个服务器(如果正在运行的话)就可以重新加载缓存的数据。

那么,我该如何在这两个程序之间进行沟通呢?

我考虑过使用套接字(sockets),但感觉这工作量有点大。要么一个程序在另一个程序关闭时不断尝试连接,要么它们两个都需要具备服务器/客户端的功能。我还研究过命名管道,但没有找到简单且可移植的解决方案(需要在Windows和Unix上都能运行)。

3 个回答

1

我同意,套接字通常太底层了。如果你研究“RabbitMQ”,那么你也应该看看celery。它可以把RabbitMQ当作后端使用,但也可以用数据库,而且它把消息传递的机制封装得很好。它还和django和gevent集成得很不错。

5

你可以让每个程序都实现一个简单的XMLRPC服务器。这样,每个程序就可以在对方上执行代码,比如告诉对方需要更新了。

3

最简单的方法就是直接用数据库来进行沟通。你可以添加一个表格来记录更新的内容。然后,任意一台机器可以定期查询,看看底层的数据有没有变化。

另一种简单的沟通方式是通过电子邮件,使用 smtplib模块。我们的构建机器人和版本控制库就是用这种方式来沟通的。

如果你想要一些更“专业”的东西,可以考虑使用 RabbitMQ 或类似的工具来进行服务器之间的消息传递。

撰写回答