SnakeBridge.ConfigHelper (SnakeBridge v0.15.1)

Copy Markdown View Source

Configuration helper for auto-configuring Snakepit to work with SnakeBridge.

Usage

In your config/config.exs, replace manual snakepit configuration with:

import Config

# Auto-configure snakepit for snakebridge
for {key, value} <- SnakeBridge.ConfigHelper.snakepit_config() do
  config :snakepit, [{key, value}]
end

Or for a cleaner look, use the convenience macro in config/runtime.exs:

import Config
SnakeBridge.ConfigHelper.configure_snakepit!()

Multi-pool configuration (with per-pool affinity):

import Config
SnakeBridge.ConfigHelper.configure_snakepit!(
  pools: [
    %{name: :hint_pool, pool_size: 2, affinity: :hint},
    %{name: :strict_pool, pool_size: 2, affinity: :strict_queue}
  ]
)

How It Works

The helper looks for a Python venv in these locations (in order):

  1. $SNAKEBRIDGE_VENV environment variable
  2. :snakebridge, :venv_path config
  3. Snakepit-managed venv (default: priv/snakepit/python/venv)
  4. .venv in the current project root
  5. .venv in SnakeBridge's installation directory (for path deps or hex deps)

For PYTHONPATH, it includes:

  • Snakepit's priv/python directory
  • SnakeBridge's priv/python directory

Summary

Functions

Auto-configures Snakepit for use with SnakeBridge at runtime.

Returns configuration values for debugging.

Returns snakepit configuration for use with SnakeBridge.

Functions

configure_snakepit!(opts \\ [])

Auto-configures Snakepit for use with SnakeBridge at runtime.

Best used in config/runtime.exs:

import Config
SnakeBridge.ConfigHelper.configure_snakepit!()

This applies configuration via Application.put_env, which works in runtime.exs.

debug_config()

Returns configuration values for debugging.

snakepit_config(opts \\ [])

@spec snakepit_config(keyword()) :: keyword()

Returns snakepit configuration for use with SnakeBridge.

Use this in config/config.exs:

for {key, value} <- SnakeBridge.ConfigHelper.snakepit_config() do
  config :snakepit, [{key, value}]
end

Options:

  • :pool_size - Number of Python workers (default: 2)
  • :venv_path - Explicit path to venv directory
  • :affinity - Snakepit session affinity mode (:hint, :strict_queue, :strict_fail_fast)
  • :adapter_env - Extra environment variables for the Python adapter (merged into each pool)
  • :pools - Multi-pool config list (maps or keyword lists); defaults apply per pool