Judge0 在线代码执行系统入门:3 步跑通并接入你的应用
2026/8/24 3:34:59 网站建设 项目流程

Judge0 在线代码执行系统入门:3 步跑通并接入你的应用

【免费下载链接】judge0Robust, fast, scalable, and sandboxed open-source online code execution system for humans and AI.项目地址: https://gitcode.com/GitHub_Trending/ju/judge0

你需要让用户提交一段代码,然后立刻拿到它的运行结果。Judge0 就是干这个的:它是个在线代码执行系统,你通过 HTTP JSON API 提交源码,它在沙箱里执行,再返回 stdout、耗时和内存。支持 90+ 语言。本教程带你从零跑通这个在线代码执行 API,并讲清日常使用中最该动的配置。

🚀 一条命令完成本地部署

装好 Docker 和 Docker Compose 后,按顺序执行:

git clone https://gitcode.com/GitHub_Trending/ju/judge0 cd judge0

编辑judge0.conf,先给REDIS_PASSWORDPOSTGRES_PASSWORD填上随机密码,然后启动:

docker-compose up -d db redis sleep 10 docker-compose up -d

几个容器起来后,API 就在http://localhost:2358上,文档页在http://localhost:2358/docs

💻 第一次调用 API 的完整流程

闭环只有两步:发起请求拿 token,再用 token 查结果。用 cURL 演示:

curl -X POST -H "Content-Type: application/json" \ -d '{"source_code":"print(\"hi\")","language_id":71,"stdin":""}' \ http://localhost:2358/submissions

返回一个 token,比如{"token": "d85cd024-..."}。拿它查结果:

curl http://localhost:2358/submissions/<token>

成功后你会看到这样的响应:stdouthi\nstatus{"id": 3, "description": "Accepted"},另外还有timememory两个数字。用 Python 写一遍,顺便展示轮询:

import requests r = requests.post("http://localhost:2358/submissions", json={ "source_code": "print('Hello, Judge0!')", "language_id": 71, "stdin": ""}) token = r.json()["token"] while True: s = requests.get(f"http://localhost:2358/submissions/{token}").json() if s["status"]["id"] >= 3: break print(s["stdout"], s["status"]["description"])

status.id为 1(排队)和 2(处理中)时结果还没出来,要重试直到 ≥3。注意language_id填错会直接返回 422,可先GET /languages查正确编号。其他语言客户端可用任意 HTTP 库,接口是一样的。

⚙️ 部署前必须动的 4 项配置

都改在judge0.conf里:

  1. REDIS_PASSWORD:Redis 启动时强制要求密码,留空整个服务起不来。
  2. POSTGRES_PASSWORD:PostgreSQL 连接密码,留空则数据库无法初始化。
  3. AUTHN_TOKEN:默认空值意味着 API 无认证,任何能访问 2358 端口的人都可执行代码;生产环境必须设置,请求时带上AUTHN_HEADER指定的头。
  4. ALLOW_ORIGIN:默认允许所有来源跨域,建议只填你自己的域名。

时间、内存等资源限制(CPU_TIME_LIMIT默认 5 秒、MEMORY_LIMIT默认 128000 KB)有合理默认值,先不用动。

🧭 按环境选部署方式

环境推荐方式适用理由
本地开发仓库自带docker-compose up -d两条命令起服务,无需额外依赖
测试 / 预发Compose 部署 + 开启AUTHN_TOKEN用与生产一致的配置验证认证链路
生产Compose 部署 + Nginx 反向代理 + HTTPS对外暴露统一入口,TLS 与限流集中处理

⚠️ 高频问题避坑指南

  • 现象docker-compose up后 server 容器反复重启,API 连不上。原因judge0.conf里两个密码为空。解法:补齐REDIS_PASSWORDPOSTGRES_PASSWORD再重启。
  • 现象:查结果一直返回status.id为 1 或 2。原因:提交还在队列或执行中,属正常异步行为。解法:轮询直到 ≥3;长时间不变时先看/health/workers确认 Worker 存活。
  • 现象:简单程序返回Time Limit Exceededstatus.id为 5)。原因:默认CPU_TIME_LIMIT只有 5 秒,或代码里有 sleep 撞上WALL_TIME_LIMIT解法:按程序实际需求调高对应限制,或在提交里单独传cpu_time_limit

官方文档:docs/docs.md

Judge0 适合 OJ 练习、编码测试、AI 代码执行等需要安全运行不可信代码的场景。想深入时,从 docs/api/ 的 API 文档和app/源码读起即可。

【免费下载链接】judge0Robust, fast, scalable, and sandboxed open-source online code execution system for humans and AI.项目地址: https://gitcode.com/GitHub_Trending/ju/judge0

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询