From 8568f5eadf09ff9536aa19054a129ab4aec49991 Mon Sep 17 00:00:00 2001 From: Nevena Bojovic Date: Wed, 13 Apr 2022 21:44:32 +0200 Subject: Doradjen training zahtev. --- backend/microservice/api/config.py | 2 ++ backend/microservice/api/controller.py | 15 ++++++++++----- backend/microservice/api/ml_service.py | 2 +- backend/microservice/api/ml_socket.py | 30 ------------------------------ backend/microservice/ml_socket.py | 31 +++++++++++++++++++++++++++++++ 5 files changed, 44 insertions(+), 36 deletions(-) create mode 100644 backend/microservice/api/config.py delete mode 100644 backend/microservice/api/ml_socket.py create mode 100644 backend/microservice/ml_socket.py (limited to 'backend') diff --git a/backend/microservice/api/config.py b/backend/microservice/api/config.py new file mode 100644 index 00000000..2b6fbe89 --- /dev/null +++ b/backend/microservice/api/config.py @@ -0,0 +1,2 @@ +api_url = "http://localhost:5283/api" + diff --git a/backend/microservice/api/controller.py b/backend/microservice/api/controller.py index 4d9f8f2a..937e643b 100644 --- a/backend/microservice/api/controller.py +++ b/backend/microservice/api/controller.py @@ -5,6 +5,8 @@ import newmlservice import tensorflow as tf import pandas as pd import json +import requests +import config app = flask.Flask(__name__) app.config["DEBUG"] = True @@ -17,16 +19,19 @@ class train_callback(tf.keras.callbacks.Callback): # def on_epoch_end(self, epoch, logs=None): print(epoch) - ml_socket.send(epoch) + #ml_socket.send(epoch) + #file = request.files.get("file") + url = config.api_url + "/Model/epoch" + requests.post(url, epoch).text #print('Evaluation: ', self.model.evaluate(self.x_test,self.y_test),"\n") #broj parametara zavisi od izabranih metrika loss je default @app.route('/train', methods = ['POST']) def train(): print("******************************TRAIN*************************************************") - f = request.json["dataset"] - dataset = pd.read_csv(f) - # - result = newmlservice.train(dataset, request.json["model"], train_callback) + f = request.files.get("file") + data = pd.read_csv(f) + #dataset, paramsModel, paramsExperiment, callback) + result = newmlservice.train(data, request.json["model"], request.json["experiment"], request.json["dataset"], train_callback) print(result) return jsonify(result) diff --git a/backend/microservice/api/ml_service.py b/backend/microservice/api/ml_service.py index 4d2212f7..16ee7cc6 100644 --- a/backend/microservice/api/ml_service.py +++ b/backend/microservice/api/ml_service.py @@ -101,7 +101,7 @@ class TrainingResultRegression: class TrainingResult: metrics: dict ''' -def train(dataset, paramsModel, paramsExperiment, callback): +def train(dataset, paramsModel, paramsExperiment, paramsDataset, callback): problem_type = paramsModel["type"] dataModel = pd.DataFrame() dataExperiment = pd.DataFrame() diff --git a/backend/microservice/api/ml_socket.py b/backend/microservice/api/ml_socket.py deleted file mode 100644 index cab157eb..00000000 --- a/backend/microservice/api/ml_socket.py +++ /dev/null @@ -1,30 +0,0 @@ -import asyncio -import websockets -import json - -def get_or_create_eventloop(): - try: - return asyncio.get_event_loop() - except RuntimeError as ex: - if "There is no current event loop in thread" in str(ex): - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - return asyncio.get_event_loop() - -# create handler for each connection -async def handler(websocket, path): - #data = json.loads(await websocket.recv()) - #print(data['test']) - msg = await websocket.recv() - print(msg) - -async def start(): - start_server = websockets.serve(handler, "localhost", 5027) - print('Websocket starting...') - get_or_create_eventloop().run_until_complete(start_server) - get_or_create_eventloop().run_forever() - -async def send(msg): - print("WS sending message:") - print(msg) - await websocket.send(msg) \ No newline at end of file diff --git a/backend/microservice/ml_socket.py b/backend/microservice/ml_socket.py new file mode 100644 index 00000000..c624ffaa --- /dev/null +++ b/backend/microservice/ml_socket.py @@ -0,0 +1,31 @@ +import asyncio +import websockets +import json + +def get_or_create_eventloop(): + try: + return asyncio.get_event_loop() + except RuntimeError as ex: + if "There is no current event loop in thread" in str(ex): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + return asyncio.get_event_loop() + +# create handler for each connection +async def handler(websocket, path): + #data = json.loads(await websocket.recv()) + #print(data['test']) + msg = await websocket.recv() + print(msg) + +async def start(): + start_server = websockets.serve(handler, "localhost", 5027) + print('Websocket starting...') + get_or_create_eventloop().run_until_complete(start_server) + get_or_create_eventloop().run_forever() + + +async def send(msg): + print("WS sending message:") + print(msg) + await websocket.send(msg) -- cgit v1.2.3