[英]node request pipe hanging after a few hours
我在用於下載圖像的節點應用程序中有一個端點
var images = { 'car': 'http://someUrlToImage.jpg', 'boat': 'http://someUrlToImage.jpg', 'train': 'http://someUrlToImage.jpg' } app.get('/api/download/:id', function(req, res){ var id = req.params.id; res.setHeader("content-disposition", "attachment; filename=image.jpg"); request.get(images[id]).pipe(res); });
現在,此代碼可以正常工作,但是在應用程序運行了幾個小時之后,端點才掛起。
我正在監視該應用程序的內存使用情況,該使用情況保持一致,並且其他僅返回一些JSON的終結點都正常響應,因此就好像事件循環被某種方式阻止一樣。 使用請求模塊傳遞響應時,我是否缺少某種陷阱? 還是有更好的解決方案來實現這一目標?
我也在使用Express模塊。
您應該在請求上添加錯誤偵聽器,因為錯誤不會在管道中傳遞。 這樣,如果您的請求有錯誤,它將關閉連接,您將得到原因。
request
.get(...)
.on('error', function(err) {
console.log(err);
res.end();
})
.pipe(res)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.