Gunicorn在多处理过程和工人之间共享内存

时间:2015-06-02 09:32:09

标签: python multiprocessing gunicorn

我有一个python应用程序,它使用字典作为多个进程之间的共享内存:

from multiprocessing import Manager
manager = Manager()
shared_dict = manager.dict()

使用Flask实现REST API。使用pywsgi或简单的Flask.run来初始化Flask服务器时一切正常。 我决定投入混合炮。现在,当我从任何工作者访问此共享字典时(即使只有一个正在运行),我收到错误:

  

message = connection.recv_bytes(256)#拒绝大邮件
  IOError:[Errno 35]资源暂时不可用

我一直在研究mmap,多处理监听器和客户端,它们看起来都是很多开销。

1 个答案:

答案 0 :(得分:0)

我不知道具体的错误,但我认为最可能的原因是,当您添加Web服务器时,会根据需要初始化进程,因此manager_dict会在调用中丢失。如果dict不够大并且您可以支付序列化/反序列化惩罚,则使用redis内存数据结构存储与py-redis库相当简单。