def rejudge_submission_set(submission_set):
cache.set(REJUDGE_COUNTER, 0)
def decrease_counter():
try:
cache.decr(REJUDGE_COUNTER, 1)
except ValueError:
cache.set(REJUDGE_COUNTER, 0)
with transaction.atomic():
for submission in submission_set:
submission.status_private = submission.status = SubmissionStatus.WAITING
submission.status_detail = ""
submission.status_message = ""
submission.save(update_fields=["status_private", "status", "status_detail", "status_message"])
for submission in submission_set:
while cache.get_or_set(REJUDGE_COUNTER, 0) >= REJUDGE_TASK_LIMIT:
sleep(1)
try:
cache.incr(REJUDGE_COUNTER, 1)
except:
cache.set(REJUDGE_COUNTER, 0)
rejudge_submission(submission, decrease_counter)
评论列表
文章目录