统一获取 redis 实例的方法
This commit is contained in:
@@ -18,6 +18,7 @@ from utils.shortcuts import (serializer_invalid_response, error_response,
|
||||
from account.models import SUPER_ADMIN, User
|
||||
from account.decorators import login_required
|
||||
from group.models import Group
|
||||
from utils.cache import get_cache_redis
|
||||
from .models import (Contest, ContestProblem, ContestSubmission, CONTEST_ENDED,
|
||||
CONTEST_NOT_START, CONTEST_UNDERWAY, ContestRank)
|
||||
from .models import GROUP_CONTEST, PUBLIC_CONTEST, PASSWORD_PROTECTED_CONTEST
|
||||
@@ -26,8 +27,6 @@ from .serializers import (CreateContestSerializer, ContestSerializer, EditContes
|
||||
CreateContestProblemSerializer, ContestProblemSerializer,
|
||||
ContestPasswordVerifySerializer,
|
||||
EditContestProblemSerializer)
|
||||
from oj.settings import REDIS_CACHE
|
||||
import redis
|
||||
|
||||
|
||||
class ContestAdminAPIView(APIView):
|
||||
@@ -119,7 +118,7 @@ class ContestAdminAPIView(APIView):
|
||||
|
||||
# 之前是封榜,现在要开放,需要清除缓存
|
||||
if contest.real_time_rank == False and data["real_time_rank"] == True:
|
||||
r = redis.Redis(host=settings.REDIS_CACHE["host"], port=settings.REDIS_CACHE["port"], db=settings.REDIS_CACHE["db"])
|
||||
r = get_cache_redis()
|
||||
cache_key = str(contest.id) + "_rank_cache"
|
||||
r.delete(cache_key)
|
||||
|
||||
@@ -392,9 +391,11 @@ def contest_list_page(request, page=1):
|
||||
def contest_rank_page(request, contest_id):
|
||||
contest = Contest.objects.get(id=contest_id)
|
||||
contest_problems = ContestProblem.objects.filter(contest=contest).order_by("sort_index")
|
||||
r = redis.Redis(host=settings.REDIS_CACHE["host"], port=settings.REDIS_CACHE["port"], db=settings.REDIS_CACHE["db"])
|
||||
|
||||
r = get_cache_redis()
|
||||
cache_key = str(contest_id) + "_rank_cache"
|
||||
rank = r.get(cache_key)
|
||||
|
||||
if not rank:
|
||||
rank = ContestRank.objects.filter(contest_id=contest_id).\
|
||||
select_related("user").\
|
||||
|
||||
@@ -9,16 +9,15 @@ from django.utils import timezone
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from judge.judger_controller.tasks import judge
|
||||
from judge.judger_controller.settings import redis_config
|
||||
|
||||
from account.decorators import login_required
|
||||
from account.models import SUPER_ADMIN
|
||||
|
||||
from contest.decorators import check_user_contest_permission
|
||||
from problem.models import Problem
|
||||
from contest.models import Contest, ContestProblem
|
||||
|
||||
from utils.shortcuts import serializer_invalid_response, error_response, success_response, error_page, paginate
|
||||
from utils.cache import get_cache_redis
|
||||
from submission.models import Submission
|
||||
from .serializers import CreateContestSubmissionSerializer
|
||||
from submission.serializers import SubmissionSerializer
|
||||
@@ -57,7 +56,7 @@ class ContestSubmissionAPIView(APIView):
|
||||
request.user.problems_status = problems_status
|
||||
request.user.save()
|
||||
# 增加redis 中判题队列长度的计数器
|
||||
r = redis.Redis(host=redis_config["host"], port=redis_config["port"], db=redis_config["db"])
|
||||
r = get_cache_redis()
|
||||
r.incr("judge_queue_length")
|
||||
return success_response({"submission_id": submission.id})
|
||||
else:
|
||||
|
||||
9
utils/cache.py
Normal file
9
utils/cache.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# coding=utf-8
|
||||
import redis
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
def get_cache_redis():
|
||||
return redis.Redis(host=settings.REDIS_CACHE["host"],
|
||||
port=settings.REDIS_CACHE["port"],
|
||||
db=settings.REDIS_CACHE["db"])
|
||||
Reference in New Issue
Block a user