代码之家  ›  专栏  ›  技术社区  ›  Traveling Tech Guy

处理Loooong HTTP请求(当前使用的是AXIOS)

  •  1
  • Traveling Tech Guy  · 技术社区  · 7 年前

    我有一台服务器,它可以转换大型文件并将结果上载到云存储。今天,我终于达到了这个极限,转换需要一分钟多的时间,上传需要2分钟多的时间,这导致了一个非常长的HTTP请求。客户机使用AXIOS来调用Express服务器。

    我在服务器端遇到的是,大约2分钟后,请求再次被调用(没有用户输入)。然后,两个请求都在客户机上失败(但在服务器上成功)。结果是同一个文件的2次转换和2次无用的上载,因为客户机收到了错误通知。

    我相信我看到的是一个Try Timeout Abort Retry Timeout Abort序列。我试图通过 {timeout: 5 * 60 * 1000} 到AXIOS获得5分钟的超时-无效。

    我们计划将进程更改为异步、带外、Web套接字等,但在此之前,我如何确保请求不会失败?是否有需要处理的浏览器级别设置?或者使用与AXIOS不同的库?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Traveling Tech Guy    7 年前

    多亏了所有的评论-你们都明白了。中止是由快车发出的。正在添加 req.setTimeout(5 * 60 * 1000) 解决了它。谢谢大家!

    更新:在 server 级别更高:

    //...express middleware + routs + etc...
    const server = app.listen(PORT, function() {
      console.log(`listening on ${PORT}`);
    });
    
    //set timeout of requests to 5 minutes
    server.timeout = 5 * 60 * 1000;