62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
import logging
|
|
import os
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
|
|
import click
|
|
from libretime_shared.cli import cli_config_options, cli_logging_options
|
|
from libretime_shared.config import DEFAULT_ENV_PREFIX
|
|
from libretime_shared.logging import setup_logger
|
|
|
|
from . import PACKAGE, VERSION
|
|
from .config import Config
|
|
from .message_listener import MessageListener
|
|
from .status_reporter import StatusReporter
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
VERSION = "1.0"
|
|
|
|
DEFAULT_RETRY_QUEUE_FILEPATH = Path("retry_queue")
|
|
|
|
|
|
@click.command(context_settings={"auto_envvar_prefix": DEFAULT_ENV_PREFIX})
|
|
@cli_logging_options()
|
|
@cli_config_options()
|
|
@click.option(
|
|
"--retry-queue-filepath",
|
|
type=click.Path(path_type=Path),
|
|
help="Path to the retry queue file.",
|
|
default=DEFAULT_RETRY_QUEUE_FILEPATH,
|
|
)
|
|
def cli(
|
|
log_level: str,
|
|
log_filepath: Optional[Path],
|
|
config_filepath: Optional[Path],
|
|
retry_queue_filepath: Path,
|
|
):
|
|
"""
|
|
Run analyzer.
|
|
"""
|
|
setup_logger(log_level, log_filepath)
|
|
config = Config(config_filepath)
|
|
|
|
if "SENTRY_DSN" in os.environ:
|
|
logger.info("installing sentry")
|
|
# pylint: disable=import-outside-toplevel
|
|
import sentry_sdk
|
|
|
|
sentry_sdk.init(
|
|
traces_sample_rate=1.0,
|
|
release=f"{PACKAGE}@{VERSION}",
|
|
)
|
|
|
|
# Start up the StatusReporter process
|
|
StatusReporter.start_thread(retry_queue_filepath)
|
|
|
|
# Start listening for RabbitMQ messages telling us about newly
|
|
# uploaded files. This blocks until we receive a shutdown signal.
|
|
MessageListener(config)
|
|
|
|
StatusReporter.stop_thread()
|