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

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

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

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

【问题讨论】:

    标签: python ipc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2010-12-26
          • 1970-01-01
          • 2018-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-05
          • 1970-01-01
          相关资源
          最近更新 更多