Я хочу запустить поток для получения данных, сохранить эти данные в переменной, а затем обработать эту переменную с помощью Flask (веб-страница). Сейчас веб-сервер обслуживает переменную, содержащую только то, что я добавил с помощью create_sock
, а не то, что было добавлено с update_data
.
sock.py
(помещает данные в переменную)
import socket
import sys
from threading import Thread
import time
import json
import config
import sock_data
class ServerThread(Thread):
def __init__(self, serv_id, host, port):
Thread.__init__(self)
self.serv_id = serv_id
self.host = host
self.port = port
def run(self):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect((self.host, self.port))
while True:
sock.sendall(b'info')
data = sock.recv(1024)
if data:
new_data = data.decode('utf-8')
new_data = json.loads(new_data)
sock_data.update_data(self.serv_id, new_data)
time.sleep(config.NEW_DATA_DELAY)
sock_data.py
(управляет переменной с помощью удобных методов)
sock_list = []
def create_sock(name):
sock_id = len(sock_list)
sock_list.append({
"sock_id": sock_id,
"name": name,
})
return sock_id
def update_data(sock_id, data):
sock_list[sock_id].update(data)
print(sock_list)
def get_all():
print(sock_list)
return sock_list
webserver.py
(служит переменной как json в сети)
from flask import Flask, jsonify
import threading
import sock
app = Flask(__name__)
@app.route("/")
def route_test():
return "Working"
@app.route("/getservers")
def route_servers():
return jsonify(sock_data.get_all())