72 lines
1.5 KiB
Python
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()
|