处理从 React 应用程序到 NodeJS 后端的长时间运行的发布请求时的建议

Posted

技术标签:

【中文标题】处理从 React 应用程序到 NodeJS 后端的长时间运行的发布请求时的建议【英文标题】:Advice when working with long running post requests from a React app to NodeJS Backend 【发布时间】:2020-08-03 18:27:22 【问题描述】:

我有一个应用程序在将 100 多个项目发送到我的 nodejs 后端进行处理时遇到问题。由于每分钟的外部 api 调用限制,整个请求最多可能需要 3 分钟。

我已经尝试过 axios 和 superagent,但都在 1-2 分钟时超时,前端将错误地说 net::ERR_EMPTY_RESPONSE with axios 和 Error: Timeout exceeded at Request.push.RequestBase from superagent - 但我的后端将继续处理作业并成功。

在快速后端中,我按照Nodejs and express server closes connection after 2 minutes 的建议将超时设置为 10 分钟。

我正在寻求建议,因为我唯一的下一个想法是分解我前端的结果并发送许多较小的请求以完成工作。

提前感谢您的任何帮助或建议。

【问题讨论】:

【参考方案1】:

axios 上,您可以设置自己的timeout 计时器。只是初始化输入点:

const api = axios.create(
    baseURL: apiURL,
    timeout: 10 * 60 * 1000, // whatever time you want
);

然后像这样使用它:

api.get()
api.post()
...

【讨论】:

在等待两分钟后,我现在在前端应用程序中收到了xhr.js:178 POST http://localhost:3000/void net::ERR_EMPTY_RESPONSE。我已经实例化了一个新的 axios,并确保它按照您的建议使用。关于它可能是什么的任何进一步的想法?谢谢 我正在使用带有开发代理的 create-react-app,将尝试将其设置为更高的数量。 @LeslieAlldridge 我现在正在使用这个功能。可能是代码错误。在那里你可以找到官方文档example 我会选择你作为答案,因为你对于不使用 create-react-app 代理的开发应用程序是正确的。事实证明,CRA 代理是 2 分钟一成不变的,只要我构建了我的应用程序并在没有 CRA 的情况下提供静态内容,它就可以毫无问题地工作。 github.com/facebook/create-react-app/issues/3210 对于将来偶然发现此线程的任何人,GitHub 问题使我陷入了创建 React App 代理的问题,在尝试手动覆盖它之后,我只是运行了一个生产构建并从我的快递服务器提供client/build/index.html,而不是运行npm run start

以上是关于处理从 React 应用程序到 NodeJS 后端的长时间运行的发布请求时的建议的主要内容,如果未能解决你的问题,请参考以下文章

如何将表单数据从 React 发送到 Node JS 后端服务器

React 前端,Node JS 后端托管

前端 (ReactJS) 到后端 (NodeJS) 身份验证

Elasticsearch 最佳实践:直接从前端或后端使用

如何为以下设置安装 SSL(React 前端 + Nodejs 后端 + 自定义域 Heroku)

如何将值从反应本机应用程序传递到节点 js 后端