2015-08-22 04:56:22 +00:00
|
|
|
# coding=utf-8
|
2015-08-22 06:26:32 +00:00
|
|
|
import logging
|
2015-08-22 04:56:22 +00:00
|
|
|
import redis
|
|
|
|
from judge.judger_controller.settings import redis_config
|
|
|
|
from judge.judger.result import result
|
|
|
|
from submission.models import Submission
|
|
|
|
from problem.models import Problem
|
|
|
|
|
2015-08-22 06:26:32 +00:00
|
|
|
logger = logging.getLogger("app_info")
|
|
|
|
|
2015-08-22 04:56:22 +00:00
|
|
|
|
|
|
|
class MessageQueue(object):
|
|
|
|
def __init__(self):
|
|
|
|
self.conn = redis.StrictRedis(host=redis_config["host"], port=redis_config["port"], db=redis_config["db"])
|
|
|
|
self.queue = 'queue'
|
|
|
|
|
|
|
|
def listen_task(self):
|
|
|
|
while True:
|
|
|
|
submission_id = self.conn.blpop(self.queue, 0)[1]
|
2015-08-22 06:26:32 +00:00
|
|
|
logger.debug("receive submission_id: " + submission_id)
|
2015-08-22 04:56:22 +00:00
|
|
|
try:
|
|
|
|
submission = Submission.objects.get(id=submission_id)
|
|
|
|
except Submission.DoesNotExist:
|
2015-08-22 06:26:32 +00:00
|
|
|
logger.warning("Submission does not exist, submission_id: " + submission_id)
|
2015-08-22 04:56:22 +00:00
|
|
|
pass
|
|
|
|
|
|
|
|
if submission.result == result["accepted"]:
|
|
|
|
# 更新题目的 ac 计数器
|
|
|
|
try:
|
|
|
|
problem = Problem.objects.get(id=submission.problem_id)
|
|
|
|
problem.total_accepted_number += 1
|
|
|
|
problem.save()
|
|
|
|
except Problem.DoesNotExist:
|
2015-08-22 06:26:32 +00:00
|
|
|
logger.warning("Submission problem does not exist, submission_id: " + submission_id)
|
2015-08-22 04:56:22 +00:00
|
|
|
pass
|
|
|
|
|
|
|
|
|
2015-08-22 06:26:32 +00:00
|
|
|
logger.debug("Start message queue")
|
2015-08-22 04:56:22 +00:00
|
|
|
MessageQueue().listen_task()
|