【问题标题】:Handling an arbitrarily long request in node.js在 node.js 中处理任意长的请求
【发布时间】:2015-12-17 22:43:49
【问题描述】:
我有一个端点,可以分析两个日期之间提交到我的网页的所有项目,然后下载包含结果的 CSV 文件。现在我有一个快速端点,它允许用户选择日期,然后提交到服务器,然后服务器需要做一些工作,最终会触发使用 csv 模块下载 csv 文件。
如果用户选择了一个合理的窄日期范围,但随着范围的扩大,这个过程可能需要比 nginx 超时时间更长的时间。我可以简单地增加超时时间,但在某些时候这会崩溃。我怎样才能重新设计它以免陷入可能的超时?
【问题讨论】:
标签:
node.js
nginx
timeout
【解决方案1】:
如果您要强制请求超时,那么您最好的选择可能是拥有某种“票证”系统,在该系统中服务器会立即使用某种令牌(“票证”)进行响应,以便稍后使用检查提交作业的状态。
从那里你也许可以生成一个返回当前状态的链接(以及可选的附加下载链接),或者如果你想获得幻想,你可以使用socket.io 之类的东西来让客户尽快得到自动通知随着作业完成(并提供下载链接)。