Przeglądaj źródła

restart server with condition and timeout

Eva Ho 1 rok temu
rodzic
commit
0768b1b907
1 zmienionych plików z 21 dodań i 17 usunięć
  1. 21 17
      app/src/index.ts

+ 21 - 17
app/src/index.ts

@@ -102,30 +102,34 @@ if (require('electron-squirrel-startup')) {
 
 function server() {
   const binary = app.isPackaged
-    ? path.join(process.resourcesPath, 'ollama')
-    : path.resolve(process.cwd(), '..', 'ollama')
+  ? path.join(process.resourcesPath, 'ollama')
+  : path.resolve(process.cwd(), '..', 'ollama');
 
-  const proc = spawn(binary, ['serve'])
+  const proc = spawn(binary, ['serve']);
 
   proc.stdout.on('data', data => {
-    logger.info(data.toString().trim())
-  })
+    logger.info(data.toString().trim());
+  });
 
   proc.stderr.on('data', data => {
-    logger.error(data.toString().trim())
-  })
-
-  function restart() {
-    logger.info('Restarting the server...')
-    server()
-  }
-
-  proc.on('exit', restart)
+    logger.error(data.toString().trim());
+  });
+    
+
+  proc.on('exit', (code, signal) => {
+    if (code === 0 || code === null) {
+      logger.info('Server has stopped.');
+      setTimeout(server, 5000);
+    } else {
+      logger.error(`Server exited with code: ${code}, signal: ${signal}`);
+      setTimeout(server, 3000);
+    }
+  });
 
   app.on('before-quit', () => {
-    proc.off('exit', restart)
-    proc.kill()
-  })
+    proc.off('exit', server);
+    proc.kill();
+  });
 }
 
 if (process.platform === 'darwin') {