Flask部署至Ubuntu服务器后跨请求丢失全局变量值的问题求助
Flask部署至Ubuntu服务器后跨请求丢失全局变量值的问题求助
我正在做一个远程监控类的项目,核心是搭建一个Flask服务器,用于接收汽车通过LTE发来的速度和温度数据,前端再通过API获取这些数据进行展示。具体流程是:汽车通过POST请求把数据发送到/API/post接口,服务器接收后把数据转存到全局变量里,之后前端从/api/getval接口拉取这些值。
之前在Windows笔记本上用flask run命令开发测试时,这套逻辑完全没问题,运行得非常流畅。但当我把代码部署到家里的Ubuntu服务器(用Nginx+Gunicorn托管)之后,所有功能都崩了——除了部署路径,我没修改任何代码,但现在POST请求虽然能正确接收数据并返回(接口会把接收到的Speed和Temp一起返回,这说明当时全局变量是正确赋值的),但调用/api/getval接口时,返回的Speed和Temp全是初始的0值。
我排查了一些点:
- POST请求里能正确解析出data变量,直接返回data也没问题,说明数据接收是正常的
- 全局变量speed和temp是在import语句之后就初始化的,代码里没有其他地方会把它们重置为0
下面是处理这两个请求的路由代码:
def handle(): global speed global temp data = request.get_json() speed = data['Speed'] temp = data['Temp'] return jsonify({'result' : '200', 'Speed' : speed, 'Temp' : temp}) @app.route('/api/getval') def getdata(): return jsonify({ 'Speed' : speed, 'Temp' : temp })
最让我困惑的不是功能失效,而是它曾经正常工作——Windows开发环境完全没问题,一部署到Ubuntu就出问题,实在搞不懂哪里出了状况,求各位帮忙分析一下!
备注:内容来源于stack exchange,提问作者Brody Young
相关产品推荐
相关产品推荐

