← Back to PythonBridge

FoundationPythonBridge summary

Documentation for foundationPythonBridge_summary from the Foundation repository.

I’ve designed a comprehensive and fully integrated Python bridge for the Foundation layer. Here’s what this implementation provides:

🏗️ Architecture Overview

Core Components:

  1. Foundation.Bridge.Python - Main bridge orchestrator with GenServer management
  2. Foundation.Bridge.Python.Worker - Individual Python process workers
  3. Foundation.Bridge.Python.Supervisor - Fault-tolerant supervision
  4. Foundation.Bridge.Python.Monitor - Advanced health monitoring and auto-scaling
  5. Foundation.Bridge.Python.Serializers - Multi-format data serialization
  6. Foundation.Bridge.Python.API - High-level convenience functions
  7. Foundation.Bridge.Python.Config - Dynamic configuration management

🚀 Key Features

Robust Process Management:

  • Connection Pooling: Multiple Python worker processes with Poolboy integration
  • Circuit Breaker Protection: Automatic failure isolation using Foundation’s infrastructure
  • Health Monitoring: Periodic health checks with automatic recovery
  • Auto-restart: Intelligent restart policies with backoff strategies

Advanced Communication:

  • Ports-based IPC: Reliable bidirectional communication with Python processes
  • JSON Protocol: Structured message format with correlation IDs
  • Multiple Serialization: JSON, MessagePack, and Erlang term formats
  • Timeout Management: Configurable timeouts with proper cleanup

Foundation Integration:

  • Events System: Full integration with Foundation Events for audit trails
  • Telemetry: Comprehensive metrics using Foundation’s telemetry system
  • Error Context: Enhanced error reporting with correlation tracking
  • Configuration: Dynamic configuration using Foundation’s config system

Production Ready:

  • Environment Variables: Production deployment configuration
  • Virtual Environment: Support for Python virtual environments
  • Resource Monitoring: Memory and performance tracking
  • Auto-scaling: Dynamic pool scaling based on workload patterns

📋 Usage Examples

Basic Execution:

# Simple calculation
{:ok, 4} = Foundation.Bridge.Python.execute("return 2 + 2")

# Function calls with arguments
{:ok, 4.0} = Foundation.Bridge.Python.call("math.sqrt", [16])

Data Science Pipeline:

# Pandas data analysis
{:ok, results} = Foundation.Bridge.Python.API.data_pipeline("""
  import pandas as pd
  df = pd.DataFrame(input_data)
  return df.groupby('category').sum().to_dict()
""", input_data: sales_data)

Machine Learning:

# Scikit-learn model training
{:ok, model_results} = Foundation.Bridge.Python.API.ml_execute("""
  from sklearn.ensemble import RandomForestClassifier
  model = RandomForestClassifier()
  model.fit(training_data['X'], training_data['y'])
  return {'accuracy': model.score(test_data['X'], test_data['y'])}
""", training_data: train_set, test_data: test_set)

Async Processing:

# Non-blocking execution
task = Foundation.Bridge.Python.API.execute_async(
  "long_running_computation()",
  callback: fn result -> Logger.info("Done: #{inspect(result)}") end
)

🔧 Configuration & Deployment

Application Integration:

The bridge integrates seamlessly into Foundation’s supervision tree:

# In Foundation.Application
children = [
  # ... existing Foundation services ...
  {Foundation.Bridge.Python.Config, []},
  {Foundation.Bridge.Python.Supervisor, [
    python_path: "/usr/bin/python3",
    pool_size: 10,
    circuit_breaker_enabled: true
  ]}
]

Environment Configuration:

export PYTHON_PATH="/usr/bin/python3"
export PYTHON_POOL_SIZE="10"
export PYTHON_VENV_PATH="/app/venv"
export PYTHON_SCRIPT_DIR="/app/priv/python"

🛡️ Reliability Features

Fault Tolerance:

  • Circuit Breakers: Prevent cascade failures when Python processes fail
  • Process Monitoring: Automatic detection and restart of failed workers
  • Graceful Degradation: Fallback mechanisms when Python is unavailable
  • Resource Limits: Memory and CPU monitoring with alerts

Error Handling:

  • Structured Errors: Foundation Error types with context and correlation
  • Timeout Management: Configurable timeouts with proper cleanup
  • Retry Logic: Intelligent retry strategies with exponential backoff
  • Health Checks: Comprehensive health monitoring and reporting

Performance:

  • Connection Pooling: Efficient reuse of Python processes
  • Async Support: Non-blocking execution patterns
  • Load Balancing: Intelligent distribution across worker pools
  • Metrics Collection: Detailed performance monitoring and telemetry

This Python bridge provides a production-ready, fault-tolerant, and highly integrated solution for executing Python code within the Foundation ecosystem. It maintains the same reliability standards as the rest of Foundation while providing powerful Python integration capabilities.