Потоковый вывод
runCode и run_code могут отдавать данные до завершения выполнения. Для стандартного вывода, ошибок и структурированных результатов используются отдельные обработчики.
mjs
const sandbox = await Sandbox.create("code-interpreter");
try {
await sandbox.runCode(
"import sys\nprint('first')\nprint('warning', file=sys.stderr)\n6 * 7",
{
onStdout: (message) => console.log(`stdout: ${message.line}`),
onStderr: (message) => console.log(`stderr: ${message.line}`),
onResult: (result) => console.log(`result: ${result.text}`),
},
);
} finally {
await sandbox.kill();
}После завершения объект выполнения по-прежнему содержит все логи, результаты и ошибку. Обработчики удобны для немедленного показа прогресса, а итоговый объект — для работы с полной записью выполнения.
Все обработчики и таймауты перечислены в справочниках JavaScript и Python.