コード例 #1
0
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()