我正在使用SenecaJS构建一个基于微服务的应用程序。到目前为止,我已经概念化了一个微服务,它只包含一个动作。当调用此操作时,将执行一个耗时的shell命令(约为x)。)并作为响应返回-- shell命令的输出。我的代码文件可以在这里获得:https://gist.github.com/ohmtrivedi/5a94841d25714f3cfd6aee260add97bb
因此,我一直试图以两种不同的方式向该服务发出请求:首先,我使用cURL向服务(它运行插件,cURL)发送一个直接请求,如下图所示:http://senecajs.org/getting-started/#writing-microservices。其次,通过参考本教程:http://senecajs.org/getting-started/#web-server-integration,我编写了一个与我的服务(osfp_service)通信的快捷API。因此,我向Express API发送HTTP请求(使用POSTMAN)。
在这两种情况下,我都会接收客户端请求超时错误。经过一些研究,我了解了Seneca实例中的超时配置。因此,我在两个位置添加了时间配置--在Seneca服务(osfp_service)中以及在Express API (app.js)中。注意,我已经将超时设置为30万毫秒或5分钟。我已经检查过shell命令大约需要3分钟,因此设置的超时值更多。但是,我仍然面临客户端请求超时错误,如下所示。我知道shell命令的执行没有错误,就像在我的序列化日志上一样,即使在我得到客户端超时请求错误之后,该操作也成功地完成了它的执行,这可以使用console.log消息看到。

希望有人能帮我解决这个问题,坚持了很长时间。
编辑所以,我一直在玩超时配置。我能够解决osfp_service.js脚本中的超时错误,方法是在最顶层(服务-js-L8)设置seneca实例中的超时。
如果我以相同的方式( app.js )设置超时配置(https://gist.github.com/ohmtrivedi/5a94841d25714f3cfd6aee260add97bb#file-app2-js-L26),那么我仍然会得到错误504:客户机请求超时/网关超时(mKPuIWUlfX)。
如果我在seneca实例(https://gist.github.com/ohmtrivedi/5a94841d25714f3cfd6aee260add97bb#file-app1-js-L26)中的传输对象内设置了https://gist.github.com/ohmtrivedi/5a94841d25714f3cfd6aee260add97bb#file-app1-js-L26中的超时配置,则会得到错误503:响应超时/服务不可用(51T)。我不明白为什么它说服务不可用,因为操作确实被执行,甚至成功完成。
我似乎无法理解不同的行为。
发布于 2018-08-16 09:28:08
我还处理了Seneca的超时问题。对于我的应用程序,解决方案是:
希望这能有所帮助。
编辑
正如在这个职位中发现的那样,也可以配置传输超时:
let seneca = require('seneca')(
{
timeout: config.request_timeout,
tag: ...,
transport: {
'web': { timeout: config.request_timeout },
'tcp': { timeout: config.request_timeout }
}
}
);https://stackoverflow.com/questions/51736174
复制相似问题