Codabench平台中提交任务卡在"Preparing"状态的技术分析
问题现象
在Codabench平台上运行竞赛时,组织者发现部分参赛者提交的任务长时间停留在"Preparing"状态,无法进入后续的"Running"和"Scoring"阶段。这些提交任务表现出以下特征:
- 多次尝试取消并重新运行提交无效
- 重新上传相同内容的zip文件作为新提交也无法解决问题
- 在worker日志中找不到相关提交的记录
根本原因分析
通过深入排查worker日志,发现问题的根源在于zip文件的压缩方法不兼容。具体错误信息显示:
NotImplementedError: That compression method is not supported
这表明Codabench的计算worker在尝试解压参赛者提交的zip文件时,遇到了不支持的压缩算法。Python的标准zipfile模块默认只支持有限的几种压缩方法,当遇到使用特殊或较新压缩算法创建的zip文件时,就会抛出此异常。
技术背景
Python的zipfile模块对zip压缩包的支持有以下限制:
- 默认只支持STORED(不压缩)和DEFLATED(最常见的压缩方法)
- 不支持较新的压缩算法如LZMA、BZIP2等
- 不支持加密的zip文件
- 对zip64格式的支持有限
当计算worker尝试处理使用这些不受支持方法压缩的文件时,就会在准备阶段失败,导致任务卡在"Preparing"状态。
解决方案
针对这一问题,有以下几种解决方案:
1. 参赛者端解决方案
建议参赛者在准备提交文件时:
- 使用标准DEFLATED压缩方法创建zip文件
- 避免使用特殊压缩工具或高级压缩选项
- 在本地测试zip文件能否被Python标准库解压
2. 组织者端解决方案
竞赛组织者可以:
- 在竞赛说明中明确指定可接受的压缩格式
- 提供示例提交文件供参赛者参考
- 实现预检查机制,在提交阶段验证zip文件的兼容性
3. 平台端解决方案
Codabench平台可以:
- 升级worker环境以支持更多压缩算法
- 在提交处理阶段增加压缩格式检查
- 提供更友好的错误提示,帮助用户识别问题
最佳实践建议
为避免类似问题,建议采用以下最佳实践:
- 标准化提交格式:明确规定并统一使用最兼容的zip压缩设置
- 预验证机制:在正式提交前提供测试环境验证功能
- 错误处理:完善错误捕获和用户反馈机制
- 文档完善:详细说明平台对文件格式的技术要求
通过以上措施,可以有效减少因文件格式兼容性问题导致的提交失败情况,提升竞赛运行的稳定性和用户体验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



