node.js - 如何在使用 HAPI 制作的 REST API 中取消时关闭下载流
问题描述
我已经使用 HAPI 实现了一个 Rest API,它提供了从数据库下载的 CSV。当我使用 an 开始下载并在下载wget http://localhost/csv/download
过程中取消它时,服务器会一直推送流直到结束。
代码
async function downloadCsvHandler(request, responseToolkit) {
let responseStream = new Transform({
allowHalfOpen: false,
writableObjectMode: true,
transform: convertJsonToCsvMethod
})
return responseToolkit.response(responseStream)
}
问题
为什么即使取消下载,HAPI 也不关闭流?
解决方案
问题是我曾经stream.pipeline
将我的流合并为一个,这导致流启动虽然 HAPI 尚未开始使用。通过使用stream1.pipe(stream2)
流在 HAPI 从中读取之前不会激活,这也会导致流在 HAPI 停止时停止。
推荐阅读
- php - 内容未知时如何将 *all* 双括号文本替换为自身的修改版本
- java - 我试图弄清楚为什么我的代码不起作用
- c - 有没有什么好的算法实现可以从特定数组元素中找到最近的负元素?
- tensorflow - 如何在 TF Object Detection 2.0 中分别加载保存的 Faster R-CNN 的两个阶段?
- bash - bash 一个班轮的问题
- php - 拉拉维尔 5.3。某些词在发布时导致方法未找到异常
- google-cloud-sql - 在使用私有 IP 连接到云 sql 的云构建上运行数据库迁移
- android - 如何在 Android 中没有 Activity 和 Fragment 的函数中使用布局组件?
- c# - EF Core 打开从 Azure MobileService 生成的 SQLite 数据库
- docker - “docker run --memory”:内部应用程序如何了解 docker 内存配置?