rejudge.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:eoj3 作者: ultmaster 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号