exchange-data-manager/src/exchange_data_manager/main.py

72 lines
1.5 KiB
Python

"""
Main entry point for Exchange Data Manager.
"""
import logging
import sys
import argparse
import uvicorn
from .config import Config
def setup_logging(config: Config):
"""Configure logging based on config."""
logging.basicConfig(
level=getattr(logging, config.logging.level.upper()),
format=config.logging.format,
)
def main():
"""Main entry point."""
parser = argparse.ArgumentParser(description="Exchange Data Manager")
parser.add_argument(
"--config", "-c",
help="Path to config file",
default=None,
)
parser.add_argument(
"--host",
help="Host to bind to",
default=None,
)
parser.add_argument(
"--port", "-p",
type=int,
help="Port to bind to",
default=None,
)
parser.add_argument(
"--reload",
action="store_true",
help="Enable auto-reload for development",
)
args = parser.parse_args()
# Load config
config = Config.load(args.config)
setup_logging(config)
logger = logging.getLogger(__name__)
logger.info("Starting Exchange Data Manager...")
# Determine host and port
host = args.host or config.server.host
port = args.port or config.server.rest_port
# Run the server
uvicorn.run(
"exchange_data_manager.api.rest:app",
host=host,
port=port,
reload=args.reload,
log_level=config.logging.level.lower(),
)
if __name__ == "__main__":
main()