在uwsgi python应用程序上共享内存

问题描述 投票:0回答:1

我有一个python flask web api应用程序,托管了uwsgi后面的processes = 4。

当我使用Multiprocessing.Manager.dict()创建字典时,不会在进程间共享字典。每个进程都有自己的dict对象。

当我更新字典时,它需要在所有进程中都可用。我该怎么做到这一点

python uwsgi python-multiprocessing
1个回答
2
投票

多处理实际上会启动应用程序的四个单独实例。每个都有自己的全局联锁。这意味着他们为每个实例使用单独的内存。

这是设计的。你有2个解决方案。 使用像Redis或Memcached这样的高速字典存储,并连接所有服务器以访问它们以满足其数据需求。

要么

您可以使用gevent和GIPC从单独的运行进程(必须在同一台机器上)来回传输数据。这具有额外的好处,即在不同的运行进程之间进行异步并仍在进行数据通信。

https://github.com/jgehrcke/gipc

© www.soinside.com 2019 - 2024. All rights reserved.