时间:2020-12-26 11:23:38 | 栏目:Python代码 | 点击:次
问题
在写flask,使用uwsgi启动的时候,涉及到多request线程访问同一个全局变量,发现不能获取到全局变量的值的修改,这在flask独立启动的时候是没有问题的。
伪代码
全局变量
@app.route('/request1/') def 函数1 修改全局变量 @app.route('/request2/') def 函数2 获取全局变量
严重怀疑是uwsgi的线程机制的问题,因为uwsgi是可以指定子进程的数目的,然而我设置子进程数目为1,之后,在处理函数1的时候是不能同时处理函数2的,怎么说,有点类似于javaweb中,uwsgi为了线程的并发,独立运行了多个进程,所以具有多个全局变量?
解决办法
想不改动源码直接从uwsgi上解决,搜索很久都没找到解决办法
找到一个别人从坑里爬起来的方法,就是用数据库等线程安全并且可以让多个线程公共访问的区域中存放数据,这样就能解决了。感觉数据库要用个sqlite才是最方便的。