我有一个python flask Web API应用程序,在uwsgi后面托管有process = 4。
当我使用Multiprocessing.Manager.dict()创建字典时,字典不跨进程共享。每个进程都有自己的dict对象。
当我更新字典时,它需要在所有过程中可用。我该如何实现
答案 0 :(得分:2)
Mulitprocessing实际上会启动应用程序的四个单独实例。每个都有自己的全局联锁。这意味着它们为每个实例使用单独的内存。
这是设计使然。您有2个解决方案。
使用Redis或Memcached之类的高速词典存储,并连接所有服务器以访问其数据需求。
OR
您可以使用gevent和GIPC从单独的运行进程(必须在同一台机器上)来回传输数据。这样做还有一个好处,就是可以保持异步,并且仍可以在单独的运行进程之间通信数据。