From 3b42d302010ebe757fd9a5107daad2394fab0271 Mon Sep 17 00:00:00 2001 From: Kento HASEGAWA Date: Tue, 14 Aug 2018 18:44:10 +0900 Subject: [PATCH] Add support for 'resolver' argument when data is send by POST --- comm/client/main.py | 5 ++--- solver/adc2018solver.py | 35 +++++++++++++++++++++-------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/comm/client/main.py b/comm/client/main.py index 1c1778c..2376135 100644 --- a/comm/client/main.py +++ b/comm/client/main.py @@ -42,18 +42,17 @@ def start(): qstr = request.form["question"] qname = request.form["qname"] qseed = request.form["qseed"] - req_id = request.form["req_id"] boardstr = BoardStr.conv_boardstr(qstr.split('\n'), 'random', int(qseed)) option = { "name": qname, "host": args['host'], "client": client_baseurl, - "req_id": req_id + "req_id": request.form['req_id'], + "resolver": request.form['resolver'] } pynqrouter.start_solver(boardstr, qseed, option) - # pynq_thread = pynqrouter.start_solver(boardstr, qseed, option) # 実行だけ開始する ans["status"] = "Processing" diff --git a/solver/adc2018solver.py b/solver/adc2018solver.py index 53d5edd..9e86600 100644 --- a/solver/adc2018solver.py +++ b/solver/adc2018solver.py @@ -78,6 +78,15 @@ def solve(boardstr, seed=12345, zero_padding=False, option=dict()): print(seed) print('') + res = { + 'client': option['client'], + 'qname': option['name'], + 'solution': '', + 'cputime': -1.0, + 'req_id': option['req_id'], + 'solved': False + } + # LINE数を数えてコンフィグするbitstreamを分岐 line_num = boardstr.count('L') if line_num < 127: @@ -89,7 +98,9 @@ def solve(boardstr, seed=12345, zero_padding=False, option=dict()): else: solver_thread.stopped() solver_thread = None - return {'solved': False, 'solution': '', 'elapsed': -1.0} + if "host" in option: + requests.post("http://{}/post".format(option['host']), data=res) + return res # ボード文字列から X, Y, Z を読んでくる size_x = (ord(boardstr[1]) - ord('0')) * 10 + (ord(boardstr[2]) - ord('0')) @@ -137,7 +148,9 @@ def solve(boardstr, seed=12345, zero_padding=False, option=dict()): if (solver_thread is not None) and (not solver_thread.is_running()): solver_thread.stopped() solver_thread = None - return { 'solved': False, 'solution': '', 'elapsed': -1.0 } + if "host" in option: + requests.post("http://{}/post".format(option['host']), data=res) + return res # 完了の確認 print('Done!') @@ -154,14 +167,6 @@ def solve(boardstr, seed=12345, zero_padding=False, option=dict()): # 解けなかったらLEDを消す mmio_led.write(0, 0) sys.stderr.write('Cannot solve it!\n') - res = { - 'client': option['client'], - 'qname': option['name'], - 'solution': '', - 'cputime': -1.0, - 'req_id': option['req_id'], - 'solved': False - } if "host" in option: requests.post("http://{}/post".format(option['host']), data=res) solver_thread = None @@ -193,9 +198,6 @@ def solve(boardstr, seed=12345, zero_padding=False, option=dict()): solution += str(boards[i]) # 普通に表示 solution += '\n' - if solver_thread is not None: - solver_thread.stopped() - res = { 'client': option['client'], 'qname': option['name'], @@ -204,8 +206,13 @@ def solve(boardstr, seed=12345, zero_padding=False, option=dict()): 'req_id': option['req_id'], 'solved': True } - if "host" in option: + if "resolver" in option: + r = requests.post("http://{}/post".format(option['resolver']), data=res) + elif "host" in option: r = requests.post("http://{}/post".format(option['host']), data=res) + + if solver_thread is not None: + solver_thread.stopped() solver_thread = None return res -- 2.22.0