mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-21 00:13:18 +00:00
使用 huey 异步队列。 ps 真想自己写一个异步队列,rq 不支持多 worker,celery 太复杂了
This commit is contained in:
parent
bf6a42b5b1
commit
2f55799457
@ -11,5 +11,4 @@ supervisor
|
|||||||
pillow
|
pillow
|
||||||
jsonfield
|
jsonfield
|
||||||
Envelopes
|
Envelopes
|
||||||
rq
|
huey
|
||||||
django-rq
|
|
@ -61,7 +61,7 @@ INSTALLED_APPS = (
|
|||||||
|
|
||||||
'django_extensions',
|
'django_extensions',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
'django_rq',
|
'huey.djhuey',
|
||||||
)
|
)
|
||||||
|
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
@ -195,17 +195,11 @@ WEBSITE_INFO = {"website_name": "qduoj",
|
|||||||
"website_footer": u"青岛大学信息工程学院 创新实验室",
|
"website_footer": u"青岛大学信息工程学院 创新实验室",
|
||||||
"url": "https://qduoj.com"}
|
"url": "https://qduoj.com"}
|
||||||
|
|
||||||
RQ_QUEUES = {
|
HUEY = {
|
||||||
'judge': {
|
'backend': 'huey.backends.redis_backend',
|
||||||
'HOST': REDIS_QUEUE["host"],
|
'name': 'task_queue',
|
||||||
'PORT': REDIS_QUEUE["port"],
|
'connection': {'host': REDIS_QUEUE["host"], 'port': REDIS_QUEUE["port"], 'db': REDIS_QUEUE["db"]},
|
||||||
'DB': 2,
|
'always_eager': False, # Defaults to False when running via manage.py run_huey
|
||||||
'DEFAULT_TIMEOUT': 60,
|
# Options to pass into the consumer when running ``manage.py run_huey``
|
||||||
},
|
'consumer_options': {'workers': 50},
|
||||||
'mail': {
|
|
||||||
'HOST': REDIS_QUEUE["host"],
|
|
||||||
'PORT': REDIS_QUEUE["port"],
|
|
||||||
'DB': 3,
|
|
||||||
'DEFAULT_TIMEOUT': 60,
|
|
||||||
}
|
|
||||||
}
|
}
|
9
submission/tasks.py
Normal file
9
submission/tasks.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# coding=utf-8
|
||||||
|
from huey.djhuey import task
|
||||||
|
|
||||||
|
from judge_dispatcher.tasks import JudgeDispatcher
|
||||||
|
|
||||||
|
|
||||||
|
@task()
|
||||||
|
def _judge(submission, time_limit, memory_limit, test_case_id):
|
||||||
|
JudgeDispatcher(submission, time_limit, memory_limit, test_case_id).judge()
|
@ -7,14 +7,13 @@ from django.shortcuts import render
|
|||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
|
||||||
from judge_dispatcher.tasks import JudgeDispatcher
|
|
||||||
from account.decorators import login_required, super_admin_required
|
from account.decorators import login_required, super_admin_required
|
||||||
from account.models import SUPER_ADMIN, User
|
from account.models import SUPER_ADMIN, User
|
||||||
from problem.models import Problem
|
from problem.models import Problem
|
||||||
from contest.models import ContestProblem, Contest
|
from contest.models import ContestProblem, Contest
|
||||||
from contest.decorators import check_user_contest_permission
|
from contest.decorators import check_user_contest_permission
|
||||||
from utils.shortcuts import serializer_invalid_response, error_response, success_response, error_page, paginate
|
from utils.shortcuts import serializer_invalid_response, error_response, success_response, error_page, paginate
|
||||||
from utils.cache import get_cache_redis
|
from .task import _judge
|
||||||
from .models import Submission
|
from .models import Submission
|
||||||
from .serializers import (CreateSubmissionSerializer, SubmissionSerializer,
|
from .serializers import (CreateSubmissionSerializer, SubmissionSerializer,
|
||||||
SubmissionhareSerializer, SubmissionRejudgeSerializer,
|
SubmissionhareSerializer, SubmissionRejudgeSerializer,
|
||||||
@ -23,10 +22,6 @@ from .serializers import (CreateSubmissionSerializer, SubmissionSerializer,
|
|||||||
logger = logging.getLogger("app_info")
|
logger = logging.getLogger("app_info")
|
||||||
|
|
||||||
|
|
||||||
def _judge(submission, time_limit, memory_limit, test_case_id):
|
|
||||||
JudgeDispatcher(submission, time_limit, memory_limit, test_case_id).judge()
|
|
||||||
|
|
||||||
|
|
||||||
class SubmissionAPIView(APIView):
|
class SubmissionAPIView(APIView):
|
||||||
@login_required
|
@login_required
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
|
Loading…
Reference in New Issue
Block a user