Streaming
E2B Code Interpreter 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),
})Was this page helpful?Suggest editsRaise issue