From cb64ece6ee3237129bb7815649cd67b9413c2926 Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Tue, 8 Dec 2015 19:04:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- judge_dispatcher/tasks.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/judge_dispatcher/tasks.py b/judge_dispatcher/tasks.py index c487eefa..f9920e6f 100644 --- a/judge_dispatcher/tasks.py +++ b/judge_dispatcher/tasks.py @@ -39,9 +39,9 @@ class JudgeDispatcher(object): # 如果没有合适的判题服务器,就放入等待队列中等待判题 if not judge_server: - if not is_waiting_task: - JudgeWaitingQueue.objects.create(submission_id=self.submission.id, time_limit=self.time_limit, - memory_limit=self.memory_limit, test_case_id=self.test_case_id) + print self.submission.id, "waiting" + JudgeWaitingQueue.objects.create(submission_id=self.submission.id, time_limit=self.time_limit, + memory_limit=self.memory_limit, test_case_id=self.test_case_id) return judge_server.use_judge_instance() @@ -51,6 +51,7 @@ class JudgeDispatcher(object): data = s.run(judge_server.token, self.submission.id, self.submission.language, self.submission.code, self.time_limit, self.memory_limit, self.test_case_id) + print self.submission.id, "finished" # 编译错误 if data["code"] == 1: @@ -78,18 +79,18 @@ class JudgeDispatcher(object): else: self.update_problem_status() - if is_waiting_task: - JudgeWaitingQueue.objects.filter(submission_id=self.submission.id).delete() - waiting_submissions = JudgeWaitingQueue.objects.all() if waiting_submissions.exists(): - submission = waiting_submissions.first() # 防止循环依赖 from submission.tasks import _judge - _judge(Submission.objects.get(id=submission.submission_id), time_limit=submission.time_limit, - memory_limit=submission.memory_limit, test_case_id=submission.test_case_id, + waiting_submission = waiting_submissions.first() + print self.submission.id, "left queue" + _judge(Submission.objects.get(id=waiting_submission.submission_id), time_limit=waiting_submission.time_limit, + memory_limit=waiting_submission.memory_limit, test_case_id=waiting_submission.test_case_id, is_waiting_task=True) + waiting_submission.delete() + def update_problem_status(self): problem = Problem.objects.get(id=self.submission.problem_id)