1 parent
eeec91e892
commit
a3cdcc7796
2 files changed
+4
-4
No files matched your search
@@ -83,7 +83,7 @@ export async function runSandbox<J extends SandboxJobName>(
|
||||
}).spawn();
|
||||
} catch (e) {
|
||||
inProcessReason = (e as Error).message;
|
||||
console.warn(`[sandbox] 起不来子进程,退回进程内执行:${inProcessReason}`);
|
||||
console.warn(`[sandbox] 起不来子进程,退回进程内执行:${inProcessReason}`);
|
||||
return runInProcess(job, input, timeoutMs) as Promise<SandboxOutput<J>>;
|
||||
}
|
||||
stats.spawned += 1;
|
||||
@@ -128,7 +128,7 @@ export async function runSandbox<J extends SandboxJobName>(
|
||||
msg = JSON.parse(line);
|
||||
} catch {
|
||||
stats.crashes += 1;
|
||||
throw new SandboxError("crash", `沙箱任务 ${job} 异常退出(code ${status.code}):${stderr.trim().slice(-300)}`);
|
||||
throw new SandboxError("crash", `沙箱任务 ${job} 异常退出(code ${status.code}):${stderr.trim().slice(-300)}`);
|
||||
}
|
||||
if (!msg.ok) throw new SandboxError("job", msg.error ?? "沙箱任务失败");
|
||||
return msg.result as SandboxOutput<J>;
|
||||
@@ -150,7 +150,7 @@ async function runInProcess<J extends SandboxJobName>(
|
||||
return await Promise.race([
|
||||
Promise.resolve().then(() => fn(input)),
|
||||
new Promise<never>((_, reject) => {
|
||||
timer = setTimeout(() => reject(new SandboxError("timeout", `沙箱任务 ${job} 超时(进程内)`)), timeoutMs);
|
||||
timer = setTimeout(() => reject(new SandboxError("timeout", `沙箱任务 ${job} 超时(进程内)`)), timeoutMs);
|
||||
}),
|
||||
]);
|
||||
} catch (e) {
|
||||
|
||||
@@ -21,7 +21,7 @@ export async function sandboxWorkerMain(): Promise<void> {
|
||||
try {
|
||||
const req = JSON.parse(await new Response(Deno.stdin.readable).text()) as { job: string; input: unknown };
|
||||
const fn = (SANDBOX_JOBS as Record<string, (i: unknown) => unknown>)[req.job];
|
||||
if (!fn) throw new Error(`没有这个沙箱任务:${req.job}`);
|
||||
if (!fn) throw new Error(`没有这个沙箱任务:${req.job}`);
|
||||
out = { ok: true, result: await fn(req.input) };
|
||||
} catch (e) {
|
||||
out = { ok: false, error: `${(e as Error).name}: ${(e as Error).message}`.slice(0, 2000) };
|
||||
|
||||
Reference in new issue
Block a user