Car*_*oza 1 api timeout heroku node.js hapijs
目前,我正在使用Node hapijs框架开发REST API .API部署在Heroku上.
API中有一个GET端点,它发出get请求以从第三方检索数据并在发送回复之前处理数据.此特定端点不时超时.当端点超时时,Heroku返回H12错误.一旦超时,对该端点的后续请求将导致H12错误.我必须重新启动Heroku上的应用程序才能使该端点再次运行.API中的任何其他端点都不会受到此错误的任何影响,即使发生错误,也可以继续正常工作.
在我的调试过程中并查看日志,似乎有时候没有从第三方API返回响应,从而导致错误.
我尝试了以下解决方案来尝试解决问题:
我正在使用请求库来发出请求.因此,我尝试将超时设置为5000毫秒,作为传递给请求的选项的一部分.它有时工作...触发超时并且端点发送与请求关联的超时错误.这是我想要的行为,因为后续的端点请求工作.但是,有时候不会触发请求超时,但Heroku仍然会返回H12错误(总是在30秒后,默认为Heroku).之后,对该端点的后续请求将返回H12错误(也在30秒后).似乎某些进程在Heroku上"卡住",并且在我重新启动应用程序之前不会终止.
我已经尝试在hapi.js路由配置对象中添加超时.我得到与上面相同的结果.
我继续做研究,并怀疑这些问题与这里和这里给出的描述有关.似乎在应用程序服务器级别设置一个可以向Heroku工作者发送SIGKILL的超时可能会起作用.在Ruby中看起来相当简单,但我找不到有关如何在Node中执行此操作的更多信息.
非常感谢任何见解.我知道向第三方发出请求时可能会发生超时.这不是问题.问题是端点似乎在超时后被"卡住"在Heroku上并且它变得没有响应.
谢谢您的帮助!