从python线程外的其他文件获取数据

从python线程外的其他文件获取数据,python,python-3.x,multithreading,flask,Python,Python 3.x,Multithreading,Flask,我想运行一个线程来获取数据,将数据存储在一个变量中,然后用Flask(网页)提供该变量。现在,Web服务器提供的变量只包含我用create\u sock添加的内容,而不是用update\u data添加的内容 sock.py(将数据放入变量) 导入套接字 导入系统 从线程导入线程 导入时间 导入json 导入配置 导入sock_数据 类ServerThread(线程): def _u初始化(自身、服务id、主机、端口): 线程。\uuuu初始化\uuuuu(自) self.serv\u id=s

我想运行一个线程来获取数据,将数据存储在一个变量中,然后用Flask(网页)提供该变量。现在,Web服务器提供的变量只包含我用
create\u sock
添加的内容,而不是用
update\u data
添加的内容

sock.py
(将数据放入变量)

导入套接字
导入系统
从线程导入线程
导入时间
导入json
导入配置
导入sock_数据
类ServerThread(线程):
def _u初始化(自身、服务id、主机、端口):
线程。\uuuu初始化\uuuuu(自)
self.serv\u id=serv\u id
self.host=host
self.port=端口
def运行(自):
将socket.socket(socket.AF_INET,socket.SOCK_STREAM)作为SOCK:
sock.connect((self.host,self.port))
尽管如此:
sock.sendall(b'info')
数据=sock.recv(1024)
如果数据:
新数据=数据解码('utf-8')
new_data=json.load(new_data)
sock_data.update_data(self.serv_id,new_data)
time.sleep(配置新数据延迟)
sock_data.py
(使用方便的方法管理变量)

sock_list=[]
def create_sock(名称):
sock_id=len(sock_列表)
sock_list.append({
“sock_id”:sock_id,
“姓名”:姓名,
})
返回袜子id
def更新_数据(sock_id,数据):
sock_列表[sock_id]。更新(数据)
打印(库存清单)
def get_all():
打印(库存清单)
返回袜子清单
webserver.py
(作为web上的json变量)

从烧瓶导入烧瓶,jsonify
导入线程
进口袜子
app=烧瓶(名称)
@附件路线(“/”)
def路由_测试():
返回“工作”
@app.route(“/getservers”)
def路由_服务器():
返回jsonify(sock\u data.get\u all())

初始化webserver.py内的线程

server_thread = ServerThread()
server_thread.start()
以下是一些您必须注意的事项:首先是使用
sock\u list
作为列表,然后作为dict。您的函数
update\u data
ServerThread
内部调用时可能会抛出keyrerror。此外,您必须小心赛车情况,如果同时调用
create_sock
update_data
,则可能会发生这种情况