新增 SQL 题型:SQLite 内联判题(不依赖外部沙箱)
- SQL 作为语言接入现有提交流程,judge_task 按 language 分流到 SQLJudgeDispatcher - judge/sql_runner.py:内存 SQLite 判题核心,查询题比结果集/增删改题比表状态, authorizer + progress_handler + max_page_count 三重防护 - dispatcher 提取 _process_judge_result/_push_status 供 SQL 判题复用(行为不变) - 测试点通道支持 1.sql..N.sql 压缩包,出题只需数据脚本+标准答案 - Problem 增加 sql_config 字段;options 数据迁移注册 SQL 语言 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,13 +2,18 @@ import dramatiq
|
||||
|
||||
from account.models import User
|
||||
from judge.dispatcher import JudgeDispatcher
|
||||
from judge.sql_dispatcher import SQLJudgeDispatcher
|
||||
from submission.models import Submission
|
||||
from utils.shortcuts import DRAMATIQ_WORKER_ARGS
|
||||
|
||||
|
||||
@dramatiq.actor(**DRAMATIQ_WORKER_ARGS())
|
||||
def judge_task(submission_id, problem_id):
|
||||
uid = Submission.objects.get(id=submission_id).user_id
|
||||
if User.objects.get(id=uid).is_disabled:
|
||||
submission = Submission.objects.get(id=submission_id)
|
||||
if User.objects.get(id=submission.user_id).is_disabled:
|
||||
return
|
||||
JudgeDispatcher(submission_id, problem_id).judge()
|
||||
# SQL 题不依赖 JudgeServer 沙箱,在 worker 内用 sqlite3 判题
|
||||
if submission.language == "SQL":
|
||||
SQLJudgeDispatcher(submission_id, problem_id).judge()
|
||||
else:
|
||||
JudgeDispatcher(submission_id, problem_id).judge()
|
||||
|
||||
Reference in New Issue
Block a user