feat(core): Dynamically loading dbgpts (#1211)

This commit is contained in:
Fangyin Cheng
2024-02-29 15:57:49 +08:00
committed by GitHub
parent 673ddaab5b
commit 1d90711952
15 changed files with 504 additions and 33 deletions

View File

@@ -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")