class ApiServer(): def __init__(self): mainServerIP = globe.components.mainServerIp mainServerPort = globe.components.mainServerPort self.mainServerAddress = 'http://' + mainServerIP + ':' + mainServerPort # Starting receiver flask server process: print("Starting the receiver HTTP server...\n") self.serverThread = threading.Thread(target=initReceiver, args=()) self.serverThread.start() time.sleep(1) self.transmitter = Transmitter(self.mainServerAddress) # Send the content of jsonPath to each devices: print("\nSending JSON paths to devices...") archAddress = globe.content[0][:-1] connMapAddress = globe.content[1][:-1] data = archAddress + '#' + connMapAddress for ip in globe.components.devicesIp: address = f'http://{ip}:8484/updateJsonPath' # f for format response = requests.post(address, data) if globe.jupyterFlag == 0: print(response.ok, response.status_code) time.sleep(1) def getWorkersList(self): return globe.components.toString('w') def getRoutersList(self): return globe.components.toString('r') def getSourcesList(self): return globe.components.toString('s') def getTransmitter(self): return self.transmitter def stopServer(self): receiver.stop() return True def getQueueData(self): received = False while not received: if not multiProcQueue.empty(): print("~New result has been created successfully~") multiProcQueue.get() # Get the new result out of the queue received = True time.sleep(0.1) def train(self): self.transmitter.train() self.getQueueData() print('Training - Finished\n') return globe.trainResults[-1] def predict(self): self.transmitter.predict() self.getQueueData() print('Prediction - Finished\n') return globe.predictResults[-1] def statistics(self): self.transmitter.statistics()