From 0b3044350b2061dc356a7d512d10f5b8e76c932d Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Wed, 16 Feb 2022 23:45:08 +0300 Subject: [PATCH] apply languages --- Checker/views.py | 4 ++++ CheckerExecutor/main.py | 25 +++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Checker/views.py b/Checker/views.py index 786d167..3308086 100644 --- a/Checker/views.py +++ b/Checker/views.py @@ -44,6 +44,8 @@ def available(request): return JsonResponse({"id": None}) solution.result = "Testing" solution.save() + checker.testing_solution = solution + checker.save() with TemporaryDirectory() as tempdir: with ZipFile(join(tempdir, "package.zip"), 'w') as zip_file: for sf in SolutionFile.objects.filter(solution=solution): @@ -68,6 +70,8 @@ def set_result(request): return JsonResponse({"status": "incorrect solution"}, status=403) solution.result = result solution.save() + checker.testing_solution = None + checker.save() return JsonResponse({"status": True}) except ObjectDoesNotExist: return JsonResponse({"status": "incorrect token"}, status=403) diff --git a/CheckerExecutor/main.py b/CheckerExecutor/main.py index df5279e..b24f22f 100644 --- a/CheckerExecutor/main.py +++ b/CheckerExecutor/main.py @@ -1,5 +1,5 @@ from multiprocessing import Process -from os import getenv +from os import getenv, environ from os.path import join from tempfile import TemporaryDirectory from time import sleep @@ -10,6 +10,8 @@ from requests import get from language import languages from testers import * +host = "http://dev.sprinthub.ru/" + def process_solution(path, data, language_id, solution_id, timeout): with open(join(path, "package.zip"), 'wb') as fs: @@ -26,13 +28,17 @@ def process_solution(path, data, language_id, solution_id, timeout): def poll(token): - while True: - print(get("http://127.0.0.1:8000/checker/status", params={"token": token}).json()) - sleep(2) + correct_token = True + while correct_token: + code = get(f"{host}checker/status", params={"token": token}).status_code + if code != 200: + correct_token = False + else: + sleep(2) def main(): - request = get("http://127.0.0.1:8000/checker/get_dynamic", params={"token": getenv("TOKEN")}) + request = get(f"{host}checker/get_dynamic", params={"token": getenv("TOKEN")}) if request.status_code != 200: print("Error happened: " + request.json()['status']) exit(1) @@ -40,7 +46,7 @@ def main(): p = Process(target=poll, args=(dynamic_token,)) p.start() while True: - data = get("http://127.0.0.1:8000/checker/available", params={"token": dynamic_token}) + data = get(f"{host}checker/available", params={"token": dynamic_token}) if data.status_code == 200: sleep(2) continue @@ -53,14 +59,17 @@ def main(): int(data.headers['solution_id']), int(data.headers['timeout']), ) - get("http://127.0.0.1:8000/checker/set_result", params={ + get(f"{host}checker/set_result", params={ "token": dynamic_token, "solution_id": data.headers['solution_id'], "result": result }) - + elif data.status_code == 403: + print("token removed") + exit(1) else: print("unknown status") + exit(1) if __name__ == '__main__':