Explorar o código

model-server: requestTimeout config option

David Sehnal %!s(int64=5) %!d(string=hai) anos
pai
achega
9edf41a2f2

+ 11 - 0
src/servers/model/config.ts

@@ -43,6 +43,11 @@ const DefaultModelServerConfig = {
      */
      */
     queryTimeoutMs: 5 * 1000,
     queryTimeoutMs: 5 * 1000,
 
 
+    /**
+     * The maximum number of ms the server spends on a request
+     */
+    requestTimeoutMs: 60 * 1000,
+
     /** Maximum number of requests before "server busy" */
     /** Maximum number of requests before "server busy" */
     maxQueueLength: 30,
     maxQueueLength: 30,
 
 
@@ -134,6 +139,12 @@ function addServerArgs(parser: argparse.ArgumentParser) {
         type: 'int',
         type: 'int',
         help: `Specify in ms how long to keep entries in cache.`
         help: `Specify in ms how long to keep entries in cache.`
     });
     });
+    parser.addArgument([ '--requestTimeoutMs' ], {
+        defaultValue: DefaultModelServerConfig.requestTimeoutMs,
+        metavar: 'REQUEST_TIMEOUT',
+        type: 'int',
+        help: `The maximum number of ms the server spends on a request.`
+    });
     parser.addArgument([ '--queryTimeoutMs' ], {
     parser.addArgument([ '--queryTimeoutMs' ], {
         defaultValue: DefaultModelServerConfig.queryTimeoutMs,
         defaultValue: DefaultModelServerConfig.queryTimeoutMs,
         metavar: 'QUERY_TIMEOUT',
         metavar: 'QUERY_TIMEOUT',

+ 1 - 1
src/servers/model/server.ts

@@ -56,7 +56,7 @@ function startServer() {
     initWebApi(app);
     initWebApi(app);
 
 
     const port = process.env.port || ServerConfig.defaultPort;
     const port = process.env.port || ServerConfig.defaultPort;
-    app.listen(port);
+    app.listen(port).setTimeout(ServerConfig.requestTimeoutMs);
 
 
     console.log(`Mol* ModelServer ${Version}`);
     console.log(`Mol* ModelServer ${Version}`);
     console.log(``);
     console.log(``);

+ 1 - 0
src/servers/model/server/api-web.ts

@@ -156,6 +156,7 @@ export function initWebApi(app: express.Express) {
     });
     });
     app.post(makePath('v1/query-many'), (req, res) => {
     app.post(makePath('v1/query-many'), (req, res) => {
         const params = req.body;
         const params = req.body;
+        req.setTimeout
         createMultiJob(params, res);
         createMultiJob(params, res);
     });
     });