Skip to main content
在 Sandbox 中运行命令时,其 stdoutstderr 输出可以通过两种方式消费:通过回调实时流式获取,或在命令结束后一次性获取全部输出。实时流式适合需要在运行过程中监控的长时间运行命令或后台命令;获取全部输出适合运行时长可预期且较短的命令。

通过回调流式获取日志

onStdout / onStderr(JavaScript)或 on_stdout / on_stderr(Python)传给 commands.run(...)。输出一旦产生,回调就会立即收到,stdout 和 stderr 分别传递。
保持回调轻量。避免在回调中执行长时间阻塞操作——这会阻塞事件处理,并可能导致底层连接断开。如需重度处理,请先缓冲或交给其他任务/线程处理。

流式获取后台命令日志

若希望在命令流式输出的同时让程序继续运行,可使用 background: true(JS)或 background=True(Python)启动命令。此时会立即返回一个 CommandHandle,而不是等待结果。你可以附加同样的 onStdout / onStderr 回调,继续处理其他工作,然后调用 wait() 阻塞至命令结束并获取其 CommandResult

命令结束后获取全部日志

如果不需要实时输出,可在前台运行命令,并从返回的 CommandResult 中读取完整的 stdoutstderr。对于运行时长可预期且较短的命令,这是最简单的方式。
对于以后台方式启动的命令,命令完成后也可以在句柄上获取累积的全部输出。

CommandResult 字段

以非零退出码结束的命令会抛出 CommandExitError(JS)/ CommandExitException(Python)。该异常携带同样的 stdoutstderrexitCodeerror 字段,因此失败时仍可检查输出。
最后修改于 2026年9月1日