
我用 flask 实现了两个接口,用于操作一个字典对象,伪代码如下:
# -*- coding: utf-8 -*- from flask import Flask, request app = Flask(__name__) shared_dict = dict() @app.route("/set") def set(): shared_dict[...] = request... @app.route("/get") def get(): return shared_dict[...] 直接用app.run()这个程序没有任何问题
现在想要部署用gunicorn+flask的方式部署,启动参数gunicorn -w 4 main:app
我发现不同的 worker 不是共用这个shared_dict对象,翻查了很多文档,没有找到解决办法
1 binux Aug 18, 2016 设计时你就应该想好这个问题。取决于需求和访问量 1. 使用 thread worker 来跑 2. 使用外部资源共享对象,例如数据库,文件等 3. 只跑一个 worker |
3 paulw54jrn Aug 18, 2016 这个涉及到操作系统进程的基本概念... |
4 felixzhu Aug 18, 2016 引入一个外部存储不就行了。开个 redis 啥的 |
6 josephok Aug 18, 2016 via Android 需要进程间通信了。 |
7 lvhuiyang Aug 18, 2016 redis 正解 |
8 lovepython Aug 19, 2016 基本进程间通信的可能性不大了,因为是 gun 控制的, 一楼的回答已经是最好的答案了 |
9 wuyu1998 Aug 20, 2016 用 NoSQL 存放 shared_dict 对象的序列化字符串。 |
10 alsoran1 Jan 29, 2018 请问楼主 这个问题当时怎么解决的?有用到共享内存吗? |