Session Management
Sessions persist state between execute() calls. Use context managers for automatic cleanup or manage sessions manually.
Context manager (recommended)
The context manager kills the VM when the block exits:
from instavm import InstaVM
with InstaVM('your_api_key') as vm:
vm.execute("x = 42")
result = vm.execute("print(x)") # Output: 42
# VM killed automatically here
Manual session management
vm = InstaVM('your_api_key')
try:
result = vm.execute("print('hello')")
if vm.is_session_active():
print("Session is active")
info = vm.get_session_info()
print(f"Session ID: {info['session_id']}")
finally:
vm.close_session()
kill()
Terminate the VM immediately:
vm = InstaVM('your_api_key')
vm.execute("print('starting')")
vm.kill() # VM is destroyed
is_session_active()
Check if the current session is still running:
if vm.is_session_active():
vm.execute("print('still running')")
get_session_info()
Returns session metadata:
info = vm.get_session_info()
# {'session_id': '...', 'status': 'active', ...}
get_usage()
Get resource consumption for the current session:
usage = vm.get_usage()
print(f"CPU Time: {usage['cpu_time']}s")
print(f"Memory Used: {usage['memory_used']} bytes")
print(f"Network I/O: {usage['network_io']} bytes")
Tips
- Reuse sessions for multi-step workflows. Each
execute()call reuses the same VM. - Always close sessions to free resources. Context managers handle this automatically.
- Use
kill()when you need to terminate immediately without waiting for cleanup.
Next steps
- Sessions (concept) -- how sessions work under the hood
- Code Execution -- running code in a session