Snakepit (snakepit v0.1.2)

Snakepit - A generalized high-performance pooler and session manager.

Extracted from DSPex V3 pool implementation, Snakepit provides:

  • Concurrent worker initialization and management
  • Stateless pool system with session affinity
  • Generalized adapter pattern for any external process
  • High-performance OTP-based process management

Basic Usage

# Configure in config/config.exs
config :snakepit,
  pooling_enabled: true,
  adapter_module: YourAdapter

# Execute commands on any available worker
{:ok, result} = Snakepit.execute("ping", %{test: true})

# Session-based execution with worker affinity
{:ok, result} = Snakepit.execute_in_session("my_session", "command", %{})

Domain-Specific Helpers

For ML/DSP workflows with program management, see Snakepit.SessionHelpers:

# ML program creation and execution
{:ok, result} = Snakepit.SessionHelpers.execute_program_command(
  "session_id", "create_program", %{signature: "input -> output"}
)

Summary

Functions

Convenience function to execute commands on the pool.

Executes a command in session context with worker affinity.

Get pool statistics.

List workers from the pool.

Functions

execute(command, args, opts \\ [])

Convenience function to execute commands on the pool.

execute_in_session(session_id, command, args, opts \\ [])

Executes a command in session context with worker affinity.

This function executes commands with session-based worker affinity, ensuring that subsequent calls with the same session_id prefer the same worker when possible for state continuity.

Args are passed through unchanged - no domain-specific enhancement. For ML/DSP program workflows, use Snakepit.SessionHelpers.execute_program_command/4.

get_stats(pool \\ Snakepit.Pool)

Get pool statistics.

list_workers(pool \\ Snakepit.Pool)

List workers from the pool.