Try optimizing batch rejudge

This commit is contained in:
cuom1999 2023-05-27 08:33:19 +07:00
parent f65238ba42
commit fbd1d865fa
2 changed files with 12 additions and 5 deletions

View file

@ -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