# PyServe Process Orchestration Example # # This configuration demonstrates running multiple ASGI/WSGI applications # as isolated processes with automatic health monitoring and restart. server: host: "0.0.0.0" port: 8000 backlog: 2048 proxy_timeout: 60.0 logging: level: DEBUG console_output: true format: type: standard use_colors: true extensions: # Process Orchestration - runs each app in its own process - type: process_orchestration config: # Port range for worker processes port_range: [9000, 9999] # Enable health monitoring health_check_enabled: true # Proxy timeout for requests proxy_timeout: 60.0 apps: # FastAPI application - name: api path: /api app_path: examples.apps.fastapi_app:app module_path: "." workers: 2 health_check_path: /health health_check_interval: 10.0 health_check_timeout: 5.0 health_check_retries: 3 max_restart_count: 5 restart_delay: 1.0 shutdown_timeout: 30.0 strip_path: true env: APP_ENV: "production" DEBUG: "false" # Flask application (WSGI wrapped to ASGI) - name: admin path: /admin app_path: examples.apps.flask_app:app app_type: wsgi module_path: "." workers: 1 health_check_path: /health strip_path: true # Starlette application - name: web path: /web app_path: examples.apps.starlette_app:app module_path: "." workers: 2 health_check_path: /health strip_path: true # Custom ASGI application - name: custom path: /custom app_path: examples.apps.custom_asgi:app module_path: "." workers: 1 health_check_path: /health strip_path: true # Routing for static files and reverse proxy - type: routing config: regex_locations: # Static files "^/static/.*": type: static root: "./static" strip_prefix: "/static" # Documentation "^/docs/?.*": type: static root: "./docs" strip_prefix: "/docs" # External API proxy "^/external/.*": type: proxy upstream: "https://api.example.com" strip_prefix: "/external" # Security headers - type: security config: security_headers: X-Content-Type-Options: "nosniff" X-Frame-Options: "DENY" X-XSS-Protection: "1; mode=block" Strict-Transport-Security: "max-age=31536000; includeSubDomains" # Monitoring - type: monitoring config: enable_metrics: true