mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-09-07 20:10:08 +00:00
feat(core): Dynamically loading dbgpts (#1211)
This commit is contained in:
@@ -6,6 +6,7 @@ import os
|
||||
import random
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from dataclasses import asdict
|
||||
from typing import Awaitable, Callable, Iterator
|
||||
@@ -490,6 +491,8 @@ class LocalWorkerManager(WorkerManager):
|
||||
async def _start_all_worker(
|
||||
self, apply_req: WorkerApplyRequest
|
||||
) -> WorkerApplyOutput:
|
||||
from httpx import TimeoutException, TransportError
|
||||
|
||||
# TODO avoid start twice
|
||||
start_time = time.time()
|
||||
logger.info(f"Begin start all worker, apply_req: {apply_req}")
|
||||
@@ -520,9 +523,24 @@ class LocalWorkerManager(WorkerManager):
|
||||
)
|
||||
)
|
||||
out.message = f"{info} start successfully"
|
||||
except Exception as e:
|
||||
except TimeoutException as e:
|
||||
out.success = False
|
||||
out.message = f"{info} start failed, {str(e)}"
|
||||
out.message = (
|
||||
f"{info} start failed for network timeout, please make "
|
||||
f"sure your port is available, if you are using global network "
|
||||
f"proxy, please close it"
|
||||
)
|
||||
except TransportError as e:
|
||||
out.success = False
|
||||
out.message = (
|
||||
f"{info} start failed for network error, please make "
|
||||
f"sure your port is available, if you are using global network "
|
||||
"proxy, please close it"
|
||||
)
|
||||
except Exception:
|
||||
err_msg = traceback.format_exc()
|
||||
out.success = False
|
||||
out.message = f"{info} start failed, {err_msg}"
|
||||
finally:
|
||||
out.timecost = time.time() - _start_time
|
||||
return out
|
||||
@@ -837,10 +855,13 @@ def _setup_fastapi(
|
||||
try:
|
||||
await worker_manager.start()
|
||||
except Exception as e:
|
||||
logger.error(f"Error starting worker manager: {e}")
|
||||
sys.exit(1)
|
||||
import signal
|
||||
|
||||
# It cannot be blocked here because the startup of worker_manager depends on the fastapi app (registered to the controller)
|
||||
logger.error(f"Error starting worker manager: {str(e)}")
|
||||
os.kill(os.getpid(), signal.SIGINT)
|
||||
|
||||
# It cannot be blocked here because the startup of worker_manager depends on
|
||||
# the fastapi app (registered to the controller)
|
||||
asyncio.create_task(start_worker_manager())
|
||||
|
||||
@app.on_event("shutdown")
|
||||
|
Reference in New Issue
Block a user