响应前 Strapi 关闭与主机的连接

Strapi closing connection to host before response

我有一个本地 Java 服务,它公开一个端点,根据请求的大小,响应有时可能需要 5 分钟以上。我想 "hide" 这个端点在 Strapi 后面,这样一个没有通过 Strapi 认证的用户就不能访问这个端点。我所做的是,在 Strapi 中创建了一个自定义路由,并为此路由创建了一个自定义控制器函数:

async optimizeRoute(ctx) {
    try {
        console.log(`${new Date()} - Optimize route started`)
        const vehicles = ctx.request.body.vehicles.map(vehicle => {
            return {
                id: vehicle.id,
                licenseplate: vehicle.licenseplate,
                maxweight: vehicle.maxweight,
                maxlength: vehicle.maxlength,
                geojson: vehicle.geojson,
                maxtime: moment(vehicle.endtime).diff(moment(vehicle.starttime), 'seconds') * 1.1
            }
        });

        const orders = ctx.request.body.orders.map(order => {
            return {
                id: order.id,
                weight: order.weight,
                length: order.length,
                geojson: order.geojson
            }
        });
        console.log(`Using ${vehicles.length} vehicles, and ${orders.length} orders!`)
        const response = await axios.post('http://127.0.0.1:9090/optimizeroutes',
            { vehicles: vehicles, orders: orders }, {timeout: 0}
        );
        return response.data;
    } catch (error) {
        ctx.throw(error.response.status, error.response);
    }
}

但是当我这样做时会发生什么,Strapi 在响应 returned 之前 1-2 分钟后关闭与请求者的连接。 使用 Strapi Beta3.17.5。 我可以在任何地方配置或调试以等待 axios return 响应然后 return 对请求者的响应??

默认服务器超时值为2分钟,请查看图像以供参考。

所以在server.js你可以通过回调函数增加这个超时值

因此代码如下所示

const strapi = require('strapi');

strapi(/* {...} */).start(()=>{

    strapi.server.setTimeout(0); 
});

将超时设置为 0 strapi 将永远等待,或者您可以以毫秒为单位增加值。

感谢@NS23 让我走上正轨,但我无法使用 server.js 启动我的服务器,并且控制台日志记录 strapi.server 返回未定义。

我所做的是在 Bootstrap.js 中访问 strapi.server,然后记录 strapi.server,可以看到超时从 120000 更改为 0