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
|
||||
jsonfield
|
||||
Envelopes
|
||||
rq
|
||||
django-rq
|
||||
huey
|
@ -61,7 +61,7 @@ INSTALLED_APPS = (
|
||||
|
||||
'django_extensions',
|
||||
'rest_framework',
|
||||
'django_rq',
|
||||
'huey.djhuey',
|
||||
)
|
||||
|
||||
if DEBUG:
|
||||
@ -195,17 +195,11 @@ WEBSITE_INFO = {"website_name": "qduoj",
|
||||
"website_footer": u"青岛大学信息工程学院 创新实验室",
|
||||
"url": "https://qduoj.com"}
|
||||
|
||||
RQ_QUEUES = {
|
||||
'judge': {
|
||||
'HOST': REDIS_QUEUE["host"],
|
||||
'PORT': REDIS_QUEUE["port"],
|
||||
'DB': 2,
|
||||
'DEFAULT_TIMEOUT': 60,
|
||||
},
|
||||
'mail': {
|
||||
'HOST': REDIS_QUEUE["host"],
|
||||
'PORT': REDIS_QUEUE["port"],
|
||||
'DB': 3,
|
||||
'DEFAULT_TIMEOUT': 60,
|
||||
}
|
||||
HUEY = {
|
||||
'backend': 'huey.backends.redis_backend',
|
||||
'name': 'task_queue',
|
||||
'connection': {'host': REDIS_QUEUE["host"], 'port': REDIS_QUEUE["port"], 'db': REDIS_QUEUE["db"]},
|
||||
'always_eager': False, # Defaults to False when running via manage.py run_huey
|
||||
# Options to pass into the consumer when running ``manage.py run_huey``
|
||||
'consumer_options': {'workers': 50},
|
||||
}
|
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 rest_framework.views import APIView
|
||||
|
||||
from judge_dispatcher.tasks import JudgeDispatcher
|
||||
from account.decorators import login_required, super_admin_required
|
||||
from account.models import SUPER_ADMIN, User
|
||||
from problem.models import Problem
|
||||
from contest.models import ContestProblem, Contest
|
||||
from contest.decorators import check_user_contest_permission
|
||||
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 .serializers import (CreateSubmissionSerializer, SubmissionSerializer,
|
||||
SubmissionhareSerializer, SubmissionRejudgeSerializer,
|
||||
@ -23,10 +22,6 @@ from .serializers import (CreateSubmissionSerializer, SubmissionSerializer,
|
||||
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):
|
||||
@login_required
|
||||
def post(self, request):
|
||||
|
Loading…
Reference in New Issue
Block a user