从Memcached重新调用对象的调用方法

时间:2015-10-05 14:54:18

标签: python linux django memcached

我需要在同一台机器上的两个python进程之间共享一些对象,我使用python memcached来存储进程中的对象,并在另一个进程中使用它们。但是,即使可以在想要使用它们的进程中检索它们,调用它们的方法也不会返回任何内容(不是预期的结果)。

如果有人需要输入,那么在这样描述的场景中会发生什么   - 对象是否完全通过,并且两个进程共享它的状态? ,或只传递一个副本,一个进程所做的更改在另一个进程中不可见   - 可以使用其他技术/库来实现python进程之间的共享对象。

由于

1 个答案:

答案 0 :(得分:0)

Memcached存储字符串值而不是您描述的丰富对象。

您所描述的内容听起来像是发布商订阅者应用程序 - 一个进程生成数据,另一个进程对其进行操作。

Memcached不是pub / sub的正确工具。您需要一个可以自动添加和弹出的列表。虽然您可以在Memcached中存储列表的字符串表示,但您无法在进程中以原子方式添加和删除此列表中的元素。

看看Redis。它具有丰富的数据结构,非常适合pub / sub和成熟Python clients使用。

对于一个简单的实现,您可以让您的一个进程将(LPUSH)数据添加到列表中。另一个进程可以从该列表中弹出(RPOP)数据并在其上运行方法。这将为您提供良好的IPC队列,可以很好地扩展。

如果您需要更复杂的内容,请查看Redis pub/sub docs - 它有一个消息传递系统,无需轮询队列以获取新值。