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
|
||||
|
||||
|
||||
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
|
||||
|
||||
CONTEST_SUBMISSION_PRIORITY = 0
|
||||
|
@ -101,7 +101,8 @@ def judge_submission(submission, rejudge=False, batch_rejudge=False, judge_id=No
|
|||
):
|
||||
return False
|
||||
|
||||
SubmissionTestCase.objects.filter(submission_id=submission.id).delete()
|
||||
if delete_testcases:
|
||||
SubmissionTestCase.objects.filter(submission_id=submission.id).delete()
|
||||
|
||||
try:
|
||||
response = judge_request(
|
||||
|
|
|
@ -2,7 +2,7 @@ from celery import shared_task
|
|||
from django.core.cache import cache
|
||||
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
|
||||
|
||||
__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)
|
||||
|
||||
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():
|
||||
submission.judge(rejudge=True, batch_rejudge=True)
|
||||
submission.judge(rejudge=True, batch_rejudge=True, delete_testcases=False)
|
||||
rejudged += 1
|
||||
if rejudged % 10 == 0:
|
||||
p.done = rejudged
|
||||
|
|
Loading…
Reference in a new issue