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

时间:2019-03-01 17:04:59

标签: python uwsgi python-multiprocessing

我有一个python flask Web API应用程序,在uwsgi后面托管有process = 4。

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

当我更新字典时,它需要在所有过程中可用。我该如何实现

1 个答案:

答案 0 :(得分:2)

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

这是设计使然。您有2个解决方案。
使用Redis或Memcached之类的高速词典存储,并连接所有服务器以访问其数据需求。

OR

您可以使用gevent和GIPC从单独的运行进程(必须在同一台机器上)来回传输数据。这样做还有一个好处,就是可以保持异步,并且仍可以在单独的运行进程之间通信数据。

https://github.com/jgehrcke/gipc