streamlit_healthcheck.streamlit-healthcheck-cli API documentation

# streamlit_healthcheck.streamlit-healthcheck-cli

View Source

      1import click
      2import logging
      3import sys
      4from typing import Optional
      5from .server import start_api_server
      6"""
      7Streamlit Health Check CLI
      8This module provides a command-line interface (CLI) for monitoring the health of Streamlit applications.
      9It offers commands to start an API server for health checks and to initialize a new health check configuration file.
     10Commands:
     11---------
     12- serve:
     13    Starts the health check API server.
     14    Options:
     15        --host: Host address to bind the server (default: '0.0.0.0')
     16        --port: Port to run the server on (default: 8000)
     17        --config: Path to health check configuration file (default: 'config/health_check_config.json')
     18        --log-level: Set the logging level (choices: DEBUG, INFO, WARNING, ERROR, CRITICAL; default: INFO)
     19- init:
     20    Initializes a new health check configuration file.
     21    Options:
     22        --config: Path to health check configuration file (default: 'config/health_check_config.json')
     23Usage:
     24------
     25Run the CLI using the following command:
     26    python streamlit-healthcheck-cli.py [COMMAND] [OPTIONS]
     27Example:
     28--------
     29    python streamlit-healthcheck-cli.py serve --host 127.0.0.1 --port 8080 --config my_config.json --log-level DEBUG
     30    python streamlit-healthcheck-cli.py init --config my_config.json
     31Logging:
     32--------
     33Logging is configured to output to stdout with customizable log levels.
     34Error Handling:
     35---------------
     36All commands handle exceptions gracefully and provide informative error messages.
     37"""
     38# Configure logging
     39logging.basicConfig(
     40    level=logging.INFO,
     41    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
     42    handlers=[
     43        logging.StreamHandler(sys.stdout)
     44    ]
     45)
     46logger = logging.getLogger(__name__)
     47
     48
     49
     50@click.group()
     51def cli():
     52    """Streamlit Health Check CLI - Monitor your Streamlit application health"""
     53    pass
     54
     55@cli.command()
     56@click.option(
     57    '--host',
     58    default='0.0.0.0',
     59    help='Host address to bind the server'
     60)
     61@click.option(
     62    '--port',
     63    default=8000,
     64    type=int,
     65    help='Port to run the server on'
     66)
     67@click.option(
     68    '--config',
     69    default='config/health_check_config.json',
     70    type=click.Path(),
     71    help='Path to health check configuration file'
     72)
     73@click.option(
     74    '--log-level',
     75    default='INFO',
     76    type=click.Choice(['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], case_sensitive=False),
     77    help='Set the logging level'
     78)
     79def serve(host: str, port: int, config: str, log_level: str):
     80    """Start the health check API server"""
     81    try:
     82        # Set logging level
     83        logging.getLogger().setLevel(log_level.upper())
     84
     85        click.echo(f"Starting health check API server on {host}:{port}")
     86        click.echo(f"Using config file: {config}")
     87        click.echo(f"Log level: {log_level}")
     88
     89        # Start the server
     90        start_api_server(host=host, port=port, config=config)
     91
     92    except Exception as e:
     93        logger.error(f"Failed to start server: {str(e)}")
     94        raise click.ClickException(str(e))
     95
     96@cli.command()
     97@click.option(
     98    '--config',
     99    default='config/health_check_config.json',
    100    type=click.Path(),
    101    help='Path to health check configuration file'
    102)
    103def init(config: str):
    104    """Initialize a new health check configuration file"""
    105    from .healthcheck import HealthCheckService
    106
    107    try:
    108        service = HealthCheckService(config_path=config)
    109        service.save_config()
    110        click.echo(f"Created new configuration file at: {config}")
    111
    112    except Exception as e:
    113        logger.error(f"Failed to create config file: {str(e)}")
    114        raise click.ClickException(str(e))
    115
    116def main():
    117    """
    118    Entry point for the Streamlit Healthcheck CLI.
    119    Attempts to execute the CLI command and handles any unexpected exceptions
    120    by logging the error and exiting the program with a non-zero status code.
    121    """
    122
    123    try:
    124        cli()
    125    except Exception as e:
    126        logger.error(f"Unexpected error: {str(e)}")
    127        sys.exit(1)
    128
    129if __name__ == '__main__':
    130    main()

logger = <Logger streamlit_healthcheck.streamlit-healthcheck-cli (INFO)>
cli = <Group cli>

Streamlit Health Check CLI - Monitor your Streamlit application health

serve = <Command serve>

Start the health check API server

init = <Command init>

Initialize a new health check configuration file

def main(): View Source

    117def main():
    118    """
    119    Entry point for the Streamlit Healthcheck CLI.
    120    Attempts to execute the CLI command and handles any unexpected exceptions
    121    by logging the error and exiting the program with a non-zero status code.
    122    """
    123
    124    try:
    125        cli()
    126    except Exception as e:
    127        logger.error(f"Unexpected error: {str(e)}")
    128        sys.exit(1)

Entry point for the Streamlit Healthcheck CLI. Attempts to execute the CLI command and handles any unexpected exceptions by logging the error and exiting the program with a non-zero status code.