Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在uwsgi python应用程序上共享内存_Python_Uwsgi_Python Multiprocessing - Fatal编程技术网

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

在uwsgi python应用程序上共享内存,python,uwsgi,python-multiprocessing,Python,Uwsgi,Python Multiprocessing,我有一个PythonFlaskWebAPI应用程序,托管在uwsgi后面,进程=4 当我使用Multiprocessing.Manager.dict()创建字典时,字典不会在进程之间共享。每个进程都有自己的dict对象 当我更新命令时,它需要在所有进程中都可用。如何实现这一点Mulitprocessing实际上会启动应用程序的四个独立实例。每个都有自己的全局联锁。这意味着它们对每个实例使用单独的内存 这是故意的。您有两种解决方案。 使用诸如Redis或Memcached之类的高速字典存储,并连接

我有一个PythonFlaskWebAPI应用程序,托管在uwsgi后面,进程=4

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


当我更新命令时,它需要在所有进程中都可用。如何实现这一点

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

这是故意的。您有两种解决方案。
使用诸如Redis或Memcached之类的高速字典存储,并连接所有服务器以访问它们的数据需求

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


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

这是故意的。您有两种解决方案。
使用诸如Redis或Memcached之类的高速字典存储,并连接所有服务器以访问它们的数据需求

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


像其他人一样使用redis?像其他人一样使用redis?芹菜不是一个存储系统。我的意思是放memcache。很好,uwsgi缓存框架怎么样?它能在这种情况下工作吗看起来是这样的:“你所有的缓存都可以通过网络访问。一个名为“缓存”的请求插件(Modifier1111)管理来自外部节点的请求。在uWSGI的标准单片构建上,缓存插件始终处于启用状态。缓存插件以完全无阻塞的方式工作,并且对greenthreads/coroutine友好,因此您可以安全地使用gevent或Coro::AnyEvent等技术。”尽管redis非常简单,我建议你这样做芹菜不是一个存储系统,我的意思是放memcache。很好,uwsgi缓存框架怎么样?它能在这种情况下工作吗看起来是这样的:“你所有的缓存都可以通过网络访问。一个名为“缓存”的请求插件(Modifier1111)管理来自外部节点的请求。在uWSGI的标准单片构建上,缓存插件始终处于启用状态。缓存插件以完全无阻塞的方式工作,并且对greenthreads/coroutine友好,因此您可以安全地使用gevent或Coro::AnyEvent等技术。”尽管redis非常简单,我建议朝那个方向走