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进程间通信建议的主要内容,如果未能解决你的问题,请参考以下文章