Streaming
Use E2B SDK allows you to stream the output, and results when executing code in the sandbox.
Stream stdout
and stderr
When using the runCode()
method in JavaScript or run_code()
in Python you can pass onStdout
/on_stdout
and onStderr
/on_stderr
callbacks to handle the output.
import { Sandbox } from '@e2b/code-interpreter'
const codeToRun = `
import time
import sys
print("This goes first to stdout")
time.sleep(3)
print("This goes later to stderr", file=sys.stderr)
time.sleep(3)
print("This goes last")
`
const sandbox = await Sandbox.create()
sandbox.runCode(codeToRun, {
// Use `onError` to handle runtime code errors
onError: error => console.error('error:', error),
onStdout: data => console.log('stdout:', data),
onStderr: data => console.error('stderr:', data),
})
The code above will print the following:
stdout: {
error: false,
line: "This goes first to stdout\n",
timestamp: 1729049666861000,
}
stderr: {
error: true,
line: "This goes later to stderr\n",
timestamp: 1729049669924000,
}
stdout: {
error: false,
line: "This goes last\n",
timestamp: 1729049672664000,
}
Stream results
When using the runCode()
method in JavaScript or run_code()
in Python you can pass onResults
/on_results
callback
to receive results from the sandbox like charts, tables, text, and more.
const codeToRun = `
import matplotlib.pyplot as plt
# Prepare data
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [10, 20, 15, 25]
# Create and customize the bar chart
plt.figure(figsize=(10, 6))
plt.bar(categories, values, color='green')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Values by Category')
# Display the chart
plt.show()
`
const sandbox = await Sandbox.create()
await sandbox.runCode(codeToRun, {
onResult: result => console.log('result:', result),
})