Módulo 7: Production Patterns

Fault Tolerance

Health Checks

def health_check():
    """Check system health"""
    checks = {
        'openai_api': check_openai(),
        'redis': check_redis(),
        'local_model': check_local_model()
    }
    
    return {
        'status': 'healthy' if all(checks.values()) else 'degraded',
        'checks': checks
    }

def check_openai():
    try:
        client.embeddings.create(
            model="text-embedding-3-small",
            input="test"
        )
        return True
    except:
        return False

Graceful Shutdown

import signal
import sys

class EmbeddingService:
    def __init__(self):
        self.running = True
        signal.signal(signal.SIGTERM, self.shutdown)
    
    def shutdown(self, signum, frame):
        """Graceful shutdown"""
        print("Shutting down gracefully...")
        self.running = False
        
        # Finish processing current batch
        self.finish_current_work()
        
        # Close connections
        self.redis.close()
        
        sys.exit(0)

Multi-Provider Failover

def get_embedding_with_failover(text):
    """Multi-provider con automatic failover"""
    providers = [
        ('openai', get_embedding_openai),
        ('cohere', get_embedding_cohere),
        ('local', get_embedding_sbert)
    ]
    
    for name, func in providers:
        try:
            return func(text)
        except Exception as e:
            logger.warning(f"{name} failed: {e}")
            continue
    
    raise Exception("All providers failed")

Resumen

  • Health checks: Monitor dependencies
  • Graceful shutdown: Finish work before exit
  • Multi-provider: Automatic failover
  • Production: Zero downtime

Módulo 7 - Cápsula 07