diff --git a/answers/submit/.gitkeep b/answers/submit/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/answers/tmp/.gitkeep b/answers/tmp/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/comm/server/main.py b/comm/server/main.py index 4caed053b1ba2ad0a249991d042d43c93c86d0bc..24f267db70d6bdbeaf82d67e7bbc3e847e4a9ade 100644 --- a/comm/server/main.py +++ b/comm/server/main.py @@ -32,7 +32,7 @@ app_args = {} questions = None clients = None current_seed = 1 -wsq = None +wsq = {} def load_questions(): global app_args @@ -117,9 +117,8 @@ def update_answer_list(qname): if answer_log['solved'] == "True": is_solved = True - - if questions[qname]['answer'] == answer_log['answer']: - questions[qname]['best_json'] = json_name + if questions[qname]['answer'] == answer_log['answer']: + questions[qname]['best_json'] = json_name if (questions[qname]['last_req'] == float(answer_log['req_id'])): if answer_log['solver'] in questions[qname]['solver']: @@ -213,7 +212,9 @@ def post(): with open(save_file_path, "w") as fp: json.dump(dat, fp, indent=4) - wsq.put(dat) + for k, v in wsq.items(): + if v is not None: + v.put(dat) res = {"status": "OK"} @@ -346,8 +347,12 @@ def save_best_solution(): _best_json = "" for k, v in questions[qname]['answers'].items(): - if v['nlcheck'] > _best_score: - _best_socer = v['nlcheck'] + try: + _score = float(v['nlcheck']) + except: + _score = -1 + if _score > _best_score: + _best_score = _score _best_json = k if _best_json != "": @@ -355,12 +360,14 @@ def save_best_solution(): if not os.path.isdir(out_path): os.makedirs(out_path) + print("Saved answer for {}: {}".format(qname, _best_json)) + qnumber = qname.replace("NL_Q", "").replace(".txt", "") out_file_path = "{}/T01_A{}.txt".format(out_path, qnumber) with open(out_file_path, 'w') as fp: fp.write(questions[qname]['answers'][_best_json]['answer']) - questions[_name]["status"] = "Saved" + questions[qname]["status"] = "Saved" questions[qname]['best_json'] = _best_json res = {"status": "OK"} @@ -600,14 +607,15 @@ def ws(): if request.environ.get('wsgi.websocket'): ws = request.environ['wsgi.websocket'] + ws_id = time.time() + wsq[ws_id] = Queue() + while True: - if wsq is None: - time.sleep(1) - continue - else: - data = wsq.get() - str_data = json.dumps(data) - ws.send(str_data) + data = wsq[ws_id].get() + str_data = json.dumps(data) + ws.send(str_data) + + wsq[ws_id] = None @app.route("/") def index(): @@ -653,9 +661,6 @@ def init_system(): if questions is None: load_questions() - if wsq is None: - wsq = Queue() - if __name__ == "__main__": parser = argparse.ArgumentParser(description="PYNQ control panel.") diff --git a/comm/server/static/js/pynq-manager.js b/comm/server/static/js/pynq-manager.js index 8361e2a63018fe3ae98098683f7ccea2dcfee601..534a61f06c76c2f1751f8e367612b8338a1715a6 100644 --- a/comm/server/static/js/pynq-manager.js +++ b/comm/server/static/js/pynq-manager.js @@ -209,6 +209,7 @@ $(function(){ data: {qname: qname} }).done((data) => { alert(data['status']); + location.reload(); }); }); $("#client-control-pane").find(".submit-button").eq(0).click(function(){