mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
feat: add logs for python process
This commit is contained in:
parent
202f5b60de
commit
8c0c3e617b
4 changed files with 68 additions and 11 deletions
|
@ -19,6 +19,7 @@ import {
|
|||
LibtorrentPayload,
|
||||
ProcessPayload,
|
||||
} from "./types";
|
||||
import { pythonInstanceLogger as logger } from "../logger";
|
||||
|
||||
export class PythonInstance {
|
||||
private static pythonProcess: cp.ChildProcess | null = null;
|
||||
|
@ -32,11 +33,13 @@ export class PythonInstance {
|
|||
});
|
||||
|
||||
public static spawn(args?: StartDownloadPayload) {
|
||||
logger.log("spawning python process with args:", args);
|
||||
this.pythonProcess = startRPCClient(args);
|
||||
}
|
||||
|
||||
public static kill() {
|
||||
if (this.pythonProcess) {
|
||||
logger.log("killing python process");
|
||||
this.pythonProcess.kill();
|
||||
this.pythonProcess = null;
|
||||
this.downloadingGameId = -1;
|
||||
|
@ -45,7 +48,10 @@ export class PythonInstance {
|
|||
|
||||
public static killTorrent() {
|
||||
if (this.pythonProcess) {
|
||||
this.rpc.post("/action", { action: "kill-torrent" });
|
||||
logger.log("killing torrent in python process");
|
||||
this.rpc
|
||||
.post("/action", { action: "kill-torrent" })
|
||||
.catch((err) => logger.error(err));
|
||||
this.downloadingGameId = -1;
|
||||
}
|
||||
}
|
||||
|
@ -138,12 +144,14 @@ export class PythonInstance {
|
|||
save_path: game.downloadPath!,
|
||||
});
|
||||
} else {
|
||||
await this.rpc.post("/action", {
|
||||
action: "start",
|
||||
game_id: game.id,
|
||||
magnet: game.uri,
|
||||
save_path: game.downloadPath,
|
||||
} as StartDownloadPayload);
|
||||
await this.rpc
|
||||
.post("/action", {
|
||||
action: "start",
|
||||
game_id: game.id,
|
||||
magnet: game.uri,
|
||||
save_path: game.downloadPath,
|
||||
} as StartDownloadPayload)
|
||||
.catch(this.handleRpcError);
|
||||
}
|
||||
|
||||
this.downloadingGameId = game.id;
|
||||
|
@ -159,4 +167,14 @@ export class PythonInstance {
|
|||
|
||||
this.downloadingGameId = -1;
|
||||
}
|
||||
|
||||
private static async handleRpcError(_error: unknown) {
|
||||
await this.rpc.get("/healthcheck").catch(() => {
|
||||
logger.error(
|
||||
"RPC healthcheck failed. Killing process and starting again"
|
||||
);
|
||||
this.kill();
|
||||
this.spawn();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue