Skip to main content

Session Management

Sessions persist state between execute() calls. Use context managers for automatic cleanup or manage sessions manually.

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