mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-21 16:33:22 +00:00
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
|
# coding=utf-8
|
||
|
import json
|
||
|
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
|
||
|
|
||
|
|
||
|
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]
|
||
|
print submission_id
|
||
|
try:
|
||
|
submission = Submission.objects.get(id=submission_id)
|
||
|
except Submission.DoesNotExist:
|
||
|
print "error 1"
|
||
|
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:
|
||
|
print "error 2"
|
||
|
pass
|
||
|
|
||
|
|
||
|
print "mq running"
|
||
|
MessageQueue().listen_task()
|