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_PASSWORD和POSTGRES_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成功后你会看到这样的响应stdout是hi\nstatus为{id: 3, description: Accepted}另外还有time和memory两个数字。用 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(fhttp://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里REDIS_PASSWORDRedis 启动时强制要求密码留空整个服务起不来。POSTGRES_PASSWORDPostgreSQL 连接密码留空则数据库无法初始化。AUTHN_TOKEN默认空值意味着 API 无认证任何能访问 2358 端口的人都可执行代码生产环境必须设置请求时带上AUTHN_HEADER指定的头。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_PASSWORD和POSTGRES_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.mdJudge0 适合 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),仅供参考