Try optimizing batch rejudge
This commit is contained in:
parent
f65238ba42
commit
fbd1d865fa
2 changed files with 12 additions and 5 deletions
|
@ -56,7 +56,7 @@ def judge_request(packet, reply=True):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def judge_submission(submission, rejudge=False, batch_rejudge=False, judge_id=None):
|
def judge_submission(submission, rejudge=False, batch_rejudge=False, judge_id=None, delete_testcases=True):
|
||||||
from .models import ContestSubmission, Submission, SubmissionTestCase
|
from .models import ContestSubmission, Submission, SubmissionTestCase
|
||||||
|
|
||||||
CONTEST_SUBMISSION_PRIORITY = 0
|
CONTEST_SUBMISSION_PRIORITY = 0
|
||||||
|
@ -101,6 +101,7 @@ def judge_submission(submission, rejudge=False, batch_rejudge=False, judge_id=No
|
||||||
):
|
):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
if delete_testcases:
|
||||||
SubmissionTestCase.objects.filter(submission_id=submission.id).delete()
|
SubmissionTestCase.objects.filter(submission_id=submission.id).delete()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -2,7 +2,7 @@ from celery import shared_task
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from judge.models import Problem, Profile, Submission
|
from judge.models import Problem, Profile, Submission, SubmissionTestCase
|
||||||
from judge.utils.celery import Progress
|
from judge.utils.celery import Progress
|
||||||
|
|
||||||
__all__ = ("apply_submission_filter", "rejudge_problem_filter", "rescore_problem")
|
__all__ = ("apply_submission_filter", "rejudge_problem_filter", "rescore_problem")
|
||||||
|
@ -30,9 +30,15 @@ def rejudge_problem_filter(
|
||||||
queryset = apply_submission_filter(queryset, id_range, languages, results, contest)
|
queryset = apply_submission_filter(queryset, id_range, languages, results, contest)
|
||||||
|
|
||||||
rejudged = 0
|
rejudged = 0
|
||||||
with Progress(self, queryset.count()) as p:
|
with Progress(self, queryset.count() * 2) as p:
|
||||||
|
for submission in queryset:
|
||||||
|
SubmissionTestCase.objects.filter(submission_id=submission.id).delete()
|
||||||
|
rejudged += 1
|
||||||
|
if rejudged % 10 == 0:
|
||||||
|
p.done = rejudged
|
||||||
|
|
||||||
for submission in queryset.iterator():
|
for submission in queryset.iterator():
|
||||||
submission.judge(rejudge=True, batch_rejudge=True)
|
submission.judge(rejudge=True, batch_rejudge=True, delete_testcases=False)
|
||||||
rejudged += 1
|
rejudged += 1
|
||||||
if rejudged % 10 == 0:
|
if rejudged % 10 == 0:
|
||||||
p.done = rejudged
|
p.done = rejudged
|
||||||
|
|
Loading…
Reference in a new issue