mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-11 12:17:45 +02:00
[Haik]: classes now extend basemodel and private vars properly dont start with an underscore
This commit is contained in:
+20
-20
@@ -12,6 +12,7 @@ import threading
|
||||
from typing import Optional
|
||||
|
||||
import httpx
|
||||
from pydantic import Field, BaseModel
|
||||
from typeguard import typechecked
|
||||
|
||||
from backend.ports import NINE_ROUTER_PORT
|
||||
@@ -20,12 +21,11 @@ from backend.apps.subscriptions.NineRouter.helpers.NineRouterProcess.helpers.for
|
||||
from backend.apps.subscriptions.NineRouter.helpers.NineRouterProcess.helpers.find_9router_dir import find_9router_dir
|
||||
from backend.apps.subscriptions.NineRouter.helpers.NineRouterProcess.helpers.find_node import find_node
|
||||
|
||||
_THIS_DIR: str = os.path.dirname(os.path.abspath(__file__))
|
||||
P_THIS_DIR: str = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class NineRouterProcess:
|
||||
def __init__(self) -> None:
|
||||
self._process: Optional[subprocess.Popen] = None
|
||||
class NineRouterProcess(BaseModel):
|
||||
p_process: Optional[subprocess.Popen] = Field(default=None)
|
||||
|
||||
@typechecked
|
||||
def is_running(self) -> bool:
|
||||
@@ -58,17 +58,17 @@ class NineRouterProcess:
|
||||
else:
|
||||
return
|
||||
|
||||
_9router_dir: Optional[str] = find_9router_dir(_THIS_DIR)
|
||||
p_9router_dir: Optional[str] = find_9router_dir(P_THIS_DIR)
|
||||
cmd: list[str]
|
||||
cwd: str | None
|
||||
env: dict[str, str]
|
||||
|
||||
if _is_packaged and _9router_dir:
|
||||
standalone_server: str = os.path.join(_9router_dir, "server.js")
|
||||
if _is_packaged and p_9router_dir:
|
||||
standalone_server: str = os.path.join(p_9router_dir, "server.js")
|
||||
if not os.path.exists(standalone_server):
|
||||
standalone_server = os.path.join(_9router_dir, ".next", "standalone", "server.js")
|
||||
standalone_server = os.path.join(p_9router_dir, ".next", "standalone", "server.js")
|
||||
if not os.path.exists(standalone_server):
|
||||
print("9Router: standalone build not found in", _9router_dir, flush=True)
|
||||
print("9Router: standalone build not found in", p_9router_dir, flush=True)
|
||||
return
|
||||
|
||||
node: Optional[str] = find_node()
|
||||
@@ -88,24 +88,24 @@ class NineRouterProcess:
|
||||
if node == os.environ.get("OPENSWARM_ELECTRON_PATH"):
|
||||
env["ELECTRON_RUN_AS_NODE"] = "1"
|
||||
|
||||
elif _9router_dir:
|
||||
elif p_9router_dir:
|
||||
npx: str | None = shutil.which("npx")
|
||||
if not npx:
|
||||
print("9Router: npx not found, cannot auto-start", flush=True)
|
||||
return
|
||||
|
||||
if not os.path.isdir(os.path.join(_9router_dir, "node_modules")):
|
||||
if not os.path.isdir(os.path.join(p_9router_dir, "node_modules")):
|
||||
print("9Router: installing dependencies...", flush=True)
|
||||
npm: str | None = shutil.which("npm")
|
||||
if npm:
|
||||
subprocess.run(
|
||||
[npm, "install"], cwd=_9router_dir,
|
||||
[npm, "install"], cwd=p_9router_dir,
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, timeout=120,
|
||||
)
|
||||
|
||||
print(f"9Router: starting (dev) on port {NINE_ROUTER_PORT}...", flush=True)
|
||||
cmd = [npx, "next", "dev", "--webpack", "-p", str(NINE_ROUTER_PORT)]
|
||||
cwd = _9router_dir
|
||||
cwd = p_9router_dir
|
||||
env = {
|
||||
**os.environ,
|
||||
"PORT": str(NINE_ROUTER_PORT),
|
||||
@@ -127,14 +127,14 @@ class NineRouterProcess:
|
||||
}
|
||||
|
||||
try:
|
||||
self._process = subprocess.Popen(
|
||||
self.p_process = subprocess.Popen(
|
||||
cmd, cwd=cwd,
|
||||
stdin=subprocess.DEVNULL,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
env=env,
|
||||
)
|
||||
threading.Thread(target=forward_output, args=(self._process.stdout,), daemon=True).start()
|
||||
threading.Thread(target=forward_output, args=(self.p_process.stdout,), daemon=True).start()
|
||||
|
||||
timeout: int = 20 if _is_packaged else 30
|
||||
for _ in range(timeout * 2):
|
||||
@@ -149,14 +149,14 @@ class NineRouterProcess:
|
||||
|
||||
@typechecked
|
||||
def stop(self) -> None:
|
||||
if self._process:
|
||||
if self.p_process:
|
||||
try:
|
||||
self._process.terminate()
|
||||
self._process.wait(timeout=5)
|
||||
self.p_process.terminate()
|
||||
self.p_process.wait(timeout=5)
|
||||
except Exception:
|
||||
try:
|
||||
self._process.kill()
|
||||
self.p_process.kill()
|
||||
except Exception:
|
||||
pass
|
||||
self._process = None
|
||||
self.p_process = None
|
||||
print("9Router stopped")
|
||||
|
||||
Reference in New Issue
Block a user