我有一个python flask web api应用程序,托管了uwsgi后面的processes = 4。
当我使用Multiprocessing.Manager.dict()创建字典时,不会在进程间共享字典。每个进程都有自己的dict对象。
当我更新字典时,它需要在所有进程中都可用。我该怎么做到这一点
多处理实际上会启动应用程序的四个单独实例。每个都有自己的全局联锁。这意味着他们为每个实例使用单独的内存。
这是设计的。你有2个解决方案。 使用像Redis或Memcached这样的高速字典存储,并连接所有服务器以访问它们以满足其数据需求。
要么
您可以使用gevent和GIPC从单独的运行进程(必须在同一台机器上)来回传输数据。这具有额外的好处,即在不同的运行进程之间进行异步并仍在进行数据通信。