From e4ff9e642a8978dc8434acdb44ff9836086cfc5f Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Fri, 21 Aug 2015 13:25:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E9=98=9F=E5=88=97=E9=95=BF=E5=BA=A6?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E5=99=A8=E6=94=B9=E4=B8=BA=20redis=20?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- judge/judger_controller/tasks.py | 5 ++++- monitor/views.py | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/judge/judger_controller/tasks.py b/judge/judger_controller/tasks.py index a25972e8..40c032b8 100644 --- a/judge/judger_controller/tasks.py +++ b/judge/judger_controller/tasks.py @@ -10,6 +10,8 @@ from settings import docker_config, source_code_dir, test_case_dir, submission_d @app.task def judge(submission_id, time_limit, memory_limit, test_case_id): + r = redis.Redis(host=redis_config["host"], port=redis_config["port"], db=redis_config["db"]) + r.incr("judge_queue_length") try: command = "%s run -t -i --privileged --rm=true " \ "-v %s:/var/judger/test_case/ " \ @@ -36,4 +38,5 @@ def judge(submission_id, time_limit, memory_limit, test_case_id): cur.execute("update submission set result=%s, info=%s where id=%s", (result["system_error"], str(e), submission_id)) conn.commit() - conn.close() \ No newline at end of file + conn.close() + r.decr("judge_queue_length") \ No newline at end of file diff --git a/monitor/views.py b/monitor/views.py index 21561bf0..15c62b4c 100644 --- a/monitor/views.py +++ b/monitor/views.py @@ -3,13 +3,17 @@ import redis import datetime from rest_framework.views import APIView from judge.judger.result import result +from judge.judger_controller.settings import redis_config from utils.shortcuts import success_response from submission.models import Submission class QueueLengthMonitorAPIView(APIView): def get(self, request): - waiting_number = Submission.objects.filter(result=result["waiting"]).count() + r = redis.Redis(host=redis_config["host"], port=redis_config["port"], db=redis_config["db"]) + waiting_number = r.get("judge_queue_length") + if waiting_number is None: + waiting_number = 0 now = datetime.datetime.now() return success_response({"time": ":".join([str(now.hour), str(now.minute), str(now.second)]), "count": waiting_number}) \ No newline at end of file