From 70705f0139cef29070edafbfc4db0544c0e9ebca Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Sat, 10 Oct 2015 19:57:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20mq=20=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E3=80=82=E4=BF=AE=E5=A4=8D=20debug=20=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=E9=83=A8=E5=88=86=E6=95=B0=E6=8D=AE=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mq/scripts/mq.py | 50 ++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/mq/scripts/mq.py b/mq/scripts/mq.py index 5e16edf5..48cf0f39 100644 --- a/mq/scripts/mq.py +++ b/mq/scripts/mq.py @@ -2,7 +2,6 @@ import logging import redis -import json from django.db import transaction @@ -10,6 +9,7 @@ from judge.judger_controller.settings import redis_config from judge.judger.result import result from submission.models import Submission from problem.models import Problem +from utils.cache import get_cache_redis from contest.models import ContestProblem, Contest, ContestSubmission, CONTEST_UNDERWAY, ContestRank from account.models import User @@ -32,7 +32,7 @@ class MessageQueue(object): logger.warning("Submission does not exist, submission_id: " + submission_id) continue - # 更新该用户的解题状态 + # 更新该用户的解题状态用 try: user = User.objects.get(pk=submission.user_id) except User.DoesNotExist: @@ -40,21 +40,23 @@ class MessageQueue(object): continue if not submission.contest_id: - # 更新普通题目的 ac 计数器 + try: + problem = Problem.objects.get(id=submission.problem_id) + except Problem.DoesNotExist: + logger.warning("Submission problem does not exist, submission_id: " + submission_id) + continue + + problems_status = user.problems_status + + # 更新普通题目的计数器 + problem.add_submission_number() if submission.result == result["accepted"]: - try: - problem = Problem.objects.get(id=submission.problem_id) - problem.total_accepted_number += 1 - problem.save() - except Problem.DoesNotExist: - logger.warning("Submission problem does not exist, submission_id: " + submission_id) - continue - - problems_status = user.problems_status + problem.add_ac_number() problems_status["problems"][str(problem.id)] = 1 - user.problems_status = problems_status - user.save() - + else: + problems_status["problems"][str(problem.id)] = 2 + user.problems_status = problems_status + user.save() # 普通题目的话,到这里就结束了 continue @@ -72,6 +74,10 @@ class MessageQueue(object): logger.warning("Submission problem does not exist, submission_id: " + submission_id) continue + # 如果比赛现在不是封榜状态,删除比赛的排名缓存 + if contest.real_time_rank: + get_cache_redis().delete(str(contest.id) + "_rank_cache") + with transaction.atomic(): try: contest_rank = ContestRank.objects.get(contest=contest, user=user) @@ -79,14 +85,16 @@ class MessageQueue(object): except ContestRank.DoesNotExist: ContestRank.objects.create(contest=contest, user=user).update_rank(submission) - if submission.result == result["accepted"]: - contest_problem.total_accepted_number += 1 - contest_problem.save() + problems_status = user.problems_status - problems_status = user.problems_status + contest_problem.add_submission_number() + if submission.result == result["accepted"]: + contest_problem.add_ac_number() problems_status["contest_problems"][str(contest_problem.id)] = 1 - user.problems_status = problems_status - user.save() + else: + problems_status["contest_problems"][str(contest_problem.id)] = 1 + user.problems_status = problems_status + user.save() logger.debug("Start message queue") MessageQueue().listen_task()