首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SenecaJS服务与Express API之间的客户端请求超时

SenecaJS服务与Express API之间的客户端请求超时
EN

Stack Overflow用户
提问于 2018-08-07 22:16:11
回答 1查看 1.4K关注 0票数 0

我正在使用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)。我不明白为什么它说服务不可用,因为操作确实被执行,甚至成功完成。

我似乎无法理解不同的行为。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-16 09:28:08

我还处理了Seneca的超时问题。对于我的应用程序,解决方案是:

  1. 将超时设置为require('seneca'): 设seneca =需用(‘seneca’)({ timeout: config.request_timeout,标记:.})
  2. 在每个act()调用中设置超时: seneca.act({timeout$:config.request_timeout,角色:.});

希望这能有所帮助。

编辑

正如在这个职位中发现的那样,也可以配置传输超时:

代码语言:javascript
复制
let seneca = require('seneca')(
  {
    timeout: config.request_timeout,
    tag: ...,
    transport: {
      'web': { timeout: config.request_timeout },
      'tcp': { timeout: config.request_timeout }
    }
  }
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51736174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档