Перейти к содержимому

Потоковый вывод

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.