feat(web_parser): 新增通用web链接解析插件框架
refactor: 重构B站、抖音、GitHub解析器为模块化结构 fix(executor): 增强docker容器错误处理和回调稳定性 style(templates): 优化帮助页面和代码执行结果的样式 perf(web_parser): 添加API缓存和消息去重机制 docs: 更新插件元信息和注释 chore: 移除旧的独立解析器插件文件
This commit is contained in:
@@ -110,7 +110,8 @@ class CodeExecutor:
|
||||
logger.error(f"[CodeExecutor] 镜像 '{self.sandbox_image}' 不存在!")
|
||||
result_message = f"执行失败:沙箱基础镜像 '{self.sandbox_image}' 不存在,请联系管理员构建。"
|
||||
except docker.errors.ContainerError as e:
|
||||
error_output = e.stderr.decode('utf-8').strip()
|
||||
# 确保 stderr 是字符串
|
||||
error_output = e.stderr.decode('utf-8').strip() if isinstance(e.stderr, bytes) else e.stderr.strip()
|
||||
result_message = f"代码执行出错:\n{error_output}"
|
||||
logger.warning(f"[CodeExecutor] 代码执行时发生错误: {error_output}")
|
||||
except docker.errors.APIError as e:
|
||||
@@ -124,7 +125,11 @@ class CodeExecutor:
|
||||
result_message = "执行引擎发生内部错误,请联系管理员。"
|
||||
|
||||
# 调用回调函数回复结果
|
||||
await task['callback'](result_message)
|
||||
try:
|
||||
await task['callback'](result_message)
|
||||
except Exception as callback_error:
|
||||
logger.error(f"[CodeExecutor] 执行回调函数时发生错误: {callback_error}")
|
||||
# 即使回调失败,也要确保任务被标记为完成
|
||||
|
||||
self.task_queue.task_done()
|
||||
|
||||
@@ -160,8 +165,10 @@ class CodeExecutor:
|
||||
|
||||
# 5. 检查退出码,如果不为 0,则手动抛出 ContainerError
|
||||
if result.get('StatusCode', 0) != 0:
|
||||
# 确保 stderr 是字符串
|
||||
error_message = stderr.decode('utf-8') if isinstance(stderr, bytes) else stderr
|
||||
raise docker.errors.ContainerError(
|
||||
container, result['StatusCode'], f"python -c '{code}'", self.sandbox_image, stderr.decode('utf-8')
|
||||
container, result['StatusCode'], f"python -c '{code}'", self.sandbox_image, error_message
|
||||
)
|
||||
|
||||
return stdout
|
||||
|
||||
Reference in New Issue
Block a user