所有通道均失败:DMX 低价图生: [DMXAPI] gpt-image-2: gpt-image-2-03: DMXAPI GPT Image 2 编辑 提交...
错误信息
所有通道均失败:DMX 低价图生: [DMXAPI] gpt-image-2: gpt-image-2-03: DMXAPI GPT Image 2 编辑 提交结果未知,可能已创建任务或产生扣费:exit code 26;DMX 普通图生: [DMXAPI] gpt-image-2: gpt-image-2: DMXAPI GPT Image 2 编辑 提交结果未知,可能已创建任务或产生扣费:exit code 26
AI 解决方案
🔍 报错分析
1. 🌐 错误翻译
原文:All channels failed: DMX Low-cost Image Generation: [DMXAPI] gpt-image-2: gpt-image-2-03: DMXAPI GPT Image 2 Edit submission result unknown, task may have been created or charges incurred: exit code 26; DMX Normal Image Generation: [DMXAPI] gpt-image-2: gpt-image-2: DMXAPI GPT Image 2 Edit submission result unknown, task may have been created or charges incurred: exit code 26
译文:所有通道均失败:DMX 低价图生:[DMXAPI] gpt-image-2:gpt-image-2-03:DMXAPI GPT Image 2 编辑提交结果未知,可能已创建任务或产生扣费:退出码 26;DMX 普通图生:[DMXAPI] gpt-image-2:gpt-image-2:DMXAPI GPT Image 2 编辑提交结果未知,可能已创建任务或产生扣费:退出码 26
2. 🎯 原因分析
SIGBUS(总线错误)或资源访问异常,表明系统底层与DMXAPI交互时出现严重系统级错误。3. 💡 解决方案
#### 核心修复逻辑
为API调用添加进程异常捕获与重试机制,同时捕获系统信号异常,避免进程直接被终止,新增超时控制与错误回调处理,确保能准确反馈接口结果。
// 修复后的DMXAPI调用代码(以JavaScript为例)
const { spawn } = require('child_process');
const axios = require('axios');
const DMXAPI_URL = 'https://api.dmxapi.com/gpt-image-2/edit';
const MAX_RETRIES = 3;
const TIMEOUT = 30000; // 30秒超时
async function callDmxImageEdit(params) {
for (let i = 0; i < MAX_RETRIES; i++) {
try {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), TIMEOUT);
const response = await axios.post(DMXAPI_URL, params, {
signal: controller.signal,
timeout: TIMEOUT,
headers: { 'Content-Type': 'application/json' }
});
clearTimeout(timeoutId);
return response.data;
} catch (error) {
clearTimeout(timeoutId);
if (error.code === 'ECONNRESET' || error.code === 'ETIMEDOUT') {
console.warn(`第${i+1}次重试,错误类型:${error.code}`);
if (i === MAX_RETRIES - 1) throw new Error(`接口超时失败,退出码映射:26(资源/连接异常)`);
continue;
}
if (error.message.includes('exit code 26')) {
console.error('系统级错误触发,终止重试');
// 记录潜在扣费任务ID并异步查询
queryTaskStatus(params.taskId);
throw new Error(`系统异常触发退出码26,可能存在未完成任务,需确认扣费`);
}
throw error;
}
}
}
// 异步查询未完成任务状态,规避扣费风险
async function queryTaskStatus(taskId) {
try {
await axios.get(`${DMXAPI_URL}/status?taskId=${taskId}`);
} catch (e) {
console.warn('任务状态查询失败,建议手动核实扣费');
}
}
4. 🛡️ 预防措施
1. 强制超时控制:所有外部API调用必须设置明确超时时间(建议30秒内),并配套重试策略,避免因等待时间过长触发系统资源异常;
2. 系统信号捕获:在进程层面捕获
SIGBUS、SIGSEGV等系统信号,搭配try-catch捕获API调用异常,双重保障避免进程被系统强制终止,确保异常可被感知和处理。1. 进程监控工具:使用
pm2 logs(Node.js项目)或对应语言的进程管理工具,实时监控进程退出码与异常信号,快速定位问题;2. API调试工具:通过Postman或Apifox对DMXAPI进行单接口压测,排查接口对异常参数、请求频率的兼容性,提前规避系统级错误触发条件。