Python进程间通信建议

Posted

技术标签:

【中文标题】Python进程间通信建议【英文标题】:Python interprocess communication advice 【发布时间】:2011-11-27 03:09:56 【问题描述】:

我有 2 台 python 服务器彼此独立运行,但共享同一个数据库。他们需要就何时对数据库进行某些更改进行通信,以便其他服务器(如果正在运行)可以重新加载缓存的数据。

在两个这样的程序之间进行通信的最佳选择是什么?

我曾考虑过使用套接字,但这似乎需要做很多工作。一个程序将在另一个程序关闭时轮询连接,或者它们都需要具有服务器/客户端功能。我查看了命名管道,但没有看到任何简单的可移植解决方案(需要在 windows 和 unix 上运行)。

【问题讨论】:

【参考方案1】:

您可以让每个人都实现一个simple XMLRPC server。然后每个人都可以在另一个人中执行代码,例如告诉另一个人它需要更新。

【讨论】:

【参考方案2】:

最简单的方法是使用数据库本身作为一种通信方式。添加用于记录更新的表。然后,任何一台机器都可以定期查询以查看底层数据是否已更改。

另一种简单的沟通方式是使用smtplib module 的电子邮件。我们的构建机器人和版本控制存储库使用这种通信形式。

如果您想要更多“工业”实力,请考虑使用RabbitMQ 或类似的方式在服务器之间进行消息传递。

【讨论】:

【参考方案3】:

我同意套接字通常太低级。如果你调查“RabbitMQ”,你也应该调查celery。它可以使用 RabbitMQ 作为后端,但也可以使用数据库,并且它巧妙地封装了消息传递机制。它还与 django 和 gevent 集成。

【讨论】:

以上是关于Python进程间通信建议的主要内容,如果未能解决你的问题,请参考以下文章

VC++ 进程间的通信

Python并发编程—进程间通信

python基础 多进程 进程间通信 multiprocess

Python进程间通信进程池协程

python基础之进程间通信进程池协程

Python开发基础--- 进程间通信进程池协程