我有2个python服务器彼此独立运行但共享同一个数据库。他们需要相互沟通,了解何时对数据库进行了某些更改,以便其他服务器(如果正在运行)可以重新加载缓存数据。
在两个这样的程序之间进行通信的最佳选择是什么?
我曾想过使用套接字但看起来很多工作。每当另一个程序关闭时,任何一个程序都将轮询连接,或者它们都需要具有服务器/客户端功能。我查看了命名管道,但没有看到任何简单的便携式解决方案(需要在Windows和unix上运行)。
答案 0 :(得分:5)
您可以让每个人实施simple XMLRPC server。然后每个人都可以在另一个中执行代码,例如告诉另一个需要更新的代码。
答案 1 :(得分:3)
最简单的方法是使用数据库本身作为通信手段。添加用于记录更新的表。然后,任何一台机器都可以定期查询以查看基础数据是否已更改。
另一种简单的沟通方式是使用 smtplib module 的电子邮件。我们的buildbots和版本控制存储库使用这种形式的通信。
如果你想要一些具有更多“工业”实力的东西,可以考虑使用RabbitMQ或其他服务器之间的消息传递。
答案 2 :(得分:1)
我同意套接字通常太低级别。如果您调查“RabbitMQ”,您还应该调查celery。它可以使用RabbitMQ作为后端,但它也可以使用数据库,它整齐地封装了消息传递机制。它还与django和gevent集成。