diff --git a/conf/views.py b/conf/views.py index bc03c010..8bb7797c 100644 --- a/conf/views.py +++ b/conf/views.py @@ -1,11 +1,11 @@ import hashlib from django.utils import timezone -from django_redis import get_redis_connection +# from django_redis import get_redis_connection from account.decorators import super_admin_required from judge.languages import languages, spj_languages -from judge.dispatcher import process_pending_task +# from judge.dispatcher import process_pending_task from utils.api import APIView, CSRFExemptAPIView, validate_serializer from utils.shortcuts import rand_str @@ -129,8 +129,8 @@ class JudgeServerHeartbeatAPI(CSRFExemptAPIView): last_heartbeat=timezone.now(), ) # 新server上线 处理队列中的,防止没有新的提交而导致一直waiting - conn = get_redis_connection("JudgeQueue") - process_pending_task(conn) + # conn = get_redis_connection("JudgeQueue") + # process_pending_task(conn) return self.success() diff --git a/judge/dispatcher.py b/judge/dispatcher.py index 48fa33e5..d3aea086 100644 --- a/judge/dispatcher.py +++ b/judge/dispatcher.py @@ -50,7 +50,7 @@ class JudgeDispatcher(object): def choose_judge_server(): with transaction.atomic(): # TODO: use more reasonable way - servers = JudgeServer.objects.select_for_update().all().order_by('task_number') + servers = JudgeServer.objects.select_for_update().all().order_by("task_number") servers = [s for s in servers if s.status == "normal"] if servers: server = servers[0] @@ -69,13 +69,13 @@ class JudgeDispatcher(object): def judge(self, output=False): server = self.choose_judge_server() if not server: - data = {'submission_id': self.submission_obj.id, 'problem_id': self.problem_obj.id} + data = {"submission_id": self.submission_obj.id, "problem_id": self.problem_obj.id} self.redis_conn.lpush(WAITING_QUEUE, json.dumps(data)) return - language = list(filter(lambda item: self.submission_obj.language == item['name'], languages))[0] + language = list(filter(lambda item: self.submission_obj.language == item["name"], languages))[0] data = { - "language_config": language['config'], + "language_config": language["config"], "src": self.submission_obj.code, "max_cpu_time": self.problem_obj.time_limit, "max_memory": 1024 * 1024 * self.problem_obj.memory_limit, @@ -85,15 +85,15 @@ class JudgeDispatcher(object): # TODO: try catch resp = self._request(urljoin(server.service_url, "/judge"), data=data) self.submission_obj.info = resp - if resp['err']: + if resp["err"]: self.submission_obj.result = JudgeStatus.COMPILE_ERROR else: - error_test_case = list(filter(lambda case: case['result'] != 0, resp['data'])) + error_test_case = list(filter(lambda case: case["result"] != 0, resp["data"])) # 多个测试点全部正确AC,否则ACM模式下取第一个测试点状态 if not error_test_case: self.submission_obj.result = JudgeStatus.ACCEPTED elif self.problem_obj.rule_type == ProblemRuleType.ACM: - self.submission_obj.result = error_test_case[0]['result'] + self.submission_obj.result = error_test_case[0]["result"] else: self.submission_obj.result = JudgeStatus.PARTIALLY_ACCEPTED self.submission_obj.save() diff --git a/oj/__init__.py b/oj/__init__.py index 1ed42e9c..23fc183a 100644 --- a/oj/__init__.py +++ b/oj/__init__.py @@ -3,4 +3,4 @@ from __future__ import absolute_import, unicode_literals # Django starts so that shared_task will use this app. from .celery import app as celery_app -__all__ = ['celery_app'] +__all__ = ["celery_app"] diff --git a/oj/celery.py b/oj/celery.py index b5edaa38..4f24c7e7 100644 --- a/oj/celery.py +++ b/oj/celery.py @@ -3,15 +3,15 @@ import os from celery import Celery from django.conf import settings -# set the default Django settings module for the 'celery' program. -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oj.settings') +# set the default Django settings module for the "celery" program. +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "oj.settings") -app = Celery('oj') +app = Celery("oj") # Using a string here means the worker will not have to # pickle the object when using Windows. -app.config_from_object('django.conf:settings') +app.config_from_object("django.conf:settings") # load task modules from all registered Django app configs. app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) diff --git a/problem/models.py b/problem/models.py index d0708ed8..0a8fda25 100644 --- a/problem/models.py +++ b/problem/models.py @@ -64,11 +64,11 @@ class AbstractProblem(models.Model): def add_submission_number(self): self.total_submit_number = models.F("total_submit_number") + 1 - self.save(update_fields=['total_submit_number']) + self.save(update_fields=["total_submit_number"]) def add_ac_number(self): self.total_accepted_number = models.F("total_accepted_number") + 1 - self.save(update_fields=['total_accepted_number']) + self.save(update_fields=["total_accepted_number"]) class Problem(AbstractProblem): diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index b48fa46d..00000000 --- a/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -django==1.9.6 -django-redis -djangorestframework==3.4.0 -otpauth -pillow -python-dateutil -celery -Envelopes -pytz -jsonfield -qrcode -requests diff --git a/submission/views/oj.py b/submission/views/oj.py index 733e0df9..553e3edd 100644 --- a/submission/views/oj.py +++ b/submission/views/oj.py @@ -30,13 +30,13 @@ class SubmissionAPI(APIView): data = request.data try: - problem = Problem.objects.get(id=data['problem_id']) + problem = Problem.objects.get(id=data["problem_id"]) except Problem.DoesNotExist: return self.error("Problem not exist") # TODO: user_id submission = Submission.objects.create(user_id=1, - language=data['language'], - code=data['code'], + language=data["language"], + code=data["code"], problem_id=problem.id) judge_task.delay(submission.id, problem.id) # JudgeDispatcher(submission.id, problem.id).judge()