在gunicorn进程中共享一个numpy数组

时间:2013-05-03 19:22:17

标签: python numpy flask ipc gunicorn

我有一个存储在redis中的大型numpy数组。此数组充当索引。我想通过在gunicorn上运行的烧瓶应用程序通过http提供过滤结果,我希望gunicorn生成的所有工人都可以访问这个numpy数组。我不想每次都去redis并在内存中反序列化整个数组,而不是在启动时我想运行一些执行此操作的代码,并且每个分叉的gunicorn工作者只获取此数组的副本。问题是,我找不到任何关于如何使用gunicorn的服务器钩子的例子: http://docs.gunicorn.org/en/latest/configure.html#server-hooks 为达到这个。 可能是服务器挂钩不是正确的做法,还有其他人做过类似的事吗?

1 个答案:

答案 0 :(得分:5)

创建一个Listener 服务器的实例,让你的gunicorn孩子连接到该进程,以获取他们作为客户端所需的任何数据。这样,进程可以根据需要修改信息,并从主进程请求它,而不是去Redis重新加载整个数据集。

此处有更多信息:Multiprocessing - 16.6.2.10. Listeners and Clients