Code Interpreter 支持在代码执行期间接收 stdout、stderr 和富结果回调。流式输出适合前端实时展示、服务端日志采集和长时间分析任务进度反馈。
stdout 和 stderr
JavaScript / TypeScript 使用 onStdout 和 onStderr:
await sandbox.runCode(
`
import sys
import time
print("start")
time.sleep(3)
print("warning", file=sys.stderr)
time.sleep(3)
print("done")
`,
{
onStdout: (data) => console.log("stdout:", data),
onStderr: (data) => console.error("stderr:", data),
onError: (error) => console.error("error:", error),
},
);Python SDK 使用 on_stdout 和 on_stderr。回调参数是输出片段,通常包含内容、是否为错误输出和时间戳。不要假设一次回调对应一整行业务日志。
sandbox.run_code(
"""
import sys
import time
print("start")
time.sleep(3)
print("warning", file=sys.stderr)
time.sleep(3)
print("done")
""",
on_stdout=lambda data: print("stdout:", data),
on_stderr=lambda data: print("stderr:", data),
on_error=lambda error: print("error:", error),
)富结果
表格、文本等富结果也可以通过回调提前接收。图表请写入文件后通过 Filesystem 取回。
await sandbox.runCode(
`
import pandas as pd
df = pd.DataFrame({"value": [1, 2, 3]})
df
`,
{
onResult: (result) => console.log("result:", result),
},
);Python SDK 使用对应的 snake_case 回调参数,具体参数名以当前 SDK 版本为准。
sandbox.run_code(
"""
import pandas as pd
df = pd.DataFrame({"value": [1, 2, 3]})
df
""",
on_result=lambda result: print("result:", result),
)使用建议
流式回调用于用户体验和日志观察,业务成功与否仍应以最终
execution.error和返回结果判断。日志量较大时,应在业务侧截断、采样或落盘,避免把完整输出保存在内存中。
前端展示流式输出时,应区分 stdout、stderr、富结果和最终状态。
如果云沙箱当前模板或 SDK 未触发富结果回调,可回退为等待最终
execution.results。
该文章对您有帮助吗?