首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在作业完成后在Express中发送响应

在作业完成后在Express中发送响应
EN

Stack Overflow用户
提问于 2020-09-03 03:03:52
回答 5查看 600关注 0票数 0

因此,我有一个接受请求的Express服务器。请求是网络抓取,需要3-4分钟才能完成。我正在使用Bull对作业排队,并在它准备好时处理它。现在的挑战是将处理过的作业的结果作为响应发送回。我有办法做到这一点吗?我在heroku上运行这个应用程序,但是heroku的请求超时时间为30秒。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-09-03 03:43:08

由于超时,您总是需要立即发送响应。由于您的过程大约需要3-4分钟,所以最好立即发送回复,说明请求已成功接收并将被处理。

现在,当任务完成后,可以使用socket.io或web套接字从服务器端通知客户端。您还可以传递一个响应。

客户端还可以连续检查任务是否在服务器端完成,这称为轮询,在不支持web套接字的旧浏览器中是必需的。当浏览器不支持网络套接字时,socket.io回到轮询。

有关更多信息和文档,请访问socket.io。

票数 0
EN

Stack Overflow用户

发布于 2020-09-03 04:51:34

您不必等到后端完成请求,才能确定请求的对象。验证用户身份。执行res.status(202).send({message:”text});,即使将响应发送给客户端,您也可以继续处理和处理

注意:不要将返回关键字放在res.status之前.

HyperText传输协议(HTTP202)接受的响应状态代码表示请求已被接受用于处理,但处理尚未完成;事实上,处理可能尚未开始。请求最终可能会被执行,也可能不会被执行,因为当处理实际发生时,它可能被不允许。

202是未提交的,这意味着HTTP无法在以后发送异步响应,指示处理请求的结果。它适用于其他进程或服务器处理请求的情况,或用于批处理。

票数 1
EN

Stack Overflow用户

发布于 2020-09-03 03:52:02

解决这个问题的最佳方法是socket.io库。它可以随时向客户端发送数据。它在客户端触发一个接收数据的函数。Socket.io支持不同的语言,它非常容易使用。

网站链接

文档链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63716177

复制
相关文章

相似问题

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