python - 调用从 Memcached 检索到的对象的方法

标签 python linux django memcached

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

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

谢谢

最佳答案

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

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

Memcached 不是发布/订阅的正确工具。您需要一个可以自动添加和弹出的列表。虽然您可以在 Memcached 中存储列表的字符串表示形式,但您不能在进程之间自动添加和删除此列表中的元素。

看看Redis .它具有丰富的数据结构,非常适合发布/订阅和成熟 Python clients使用。

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

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

关于python - 调用从 Memcached 检索到的对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951606/

相关文章:

python - 如何在两个 django 类之间共享变量?

python - 尝试理解 .strip

linux - 关于Uboot中的BOOTCMD

javascript - 管理大型项目中的 JavaScript 复杂性

python - 在 Django 中验证上传的文件

python - 如何使用 Python 请求来伪造浏览器访问 a.k.a 并生成用户代理?

linux - 释放物理内存页面并强制页面错误

linux - 如何从网页中提取数据(用户名)

python - 如何在 Django 列表中排序

python - tkinter 中不可移动的文本