""" 服务器运行器:整合所有组件并启动 uvicorn。 """ import uvicorn from foundation.observability.logger.loggering import server_logger from server.signals import setup_signal_handlers class ServerRunner: """服务器运行器。""" def __init__(self, app_factory): self.app_factory = app_factory self.celery_manager = app_factory.celery_manager def run_server(self, **kwargs): config = self.app_factory.create_server_config() config.update(kwargs) host = config.get('host', '0.0.0.0') port = int(config.get('port', 8002)) reload = config.get('reload', False) with_celery = config.get('with_celery', True) if with_celery: self.celery_manager.start_worker() setup_signal_handlers(lambda: self.celery_manager.stop_worker_immediately()) app = self.app_factory.create_app() try: if reload: uvicorn.run("server.app:app", host=host, port=port, reload=reload) else: uvicorn.run(app, host=host, port=port) finally: if with_celery: self.celery_manager.stop_worker()