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
Convenience function to execute commands on the pool.
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 pool statistics.
List workers from the pool.