gpt4 book ai didi

javascript - Node : Do I need to end HTTP requests to save memory/CPU?

转载 作者:搜寻专家 更新时间:2023-10-31 23:53:10 24 4
gpt4 key购买 nike

我使用 Request 在 Node 和 Express 中编写了一个程序连接到 API 并下载一堆数据(想想 3,000 个 API 请求)(请注意,都在 API 的使用限制内)。

在 Docker 容器中运行它时,我遇到了很多 getaddrinfo ENOTFOUND 错误,我想知道这是否是资源问题。我的要求是这样的:

request.get(url, function(err, resp, body){
// do stuff with the body here,
// like create an object and handball to a worker function
});

对于前几百个请求,这总是可以正常工作,但随后我收到了很多 ENOTFOUND 或超时错误,我认为问题可能出在我的代码处理所有问题的方式上这些要求。

我已将它们分批放入一个带有超时的队列中,因此请求发生的速度相对较慢,这有一点帮助,但并不能完全解决问题。

我是否需要销毁正文/响应对象以释放内存或其他东西?

最佳答案

我在使用 API 时遇到过类似的问题,结果就是这里有人建议的问题 - 速率限制。某些 API 不会返回有关速率限制的可读错误,因为它们为每个客户端提供一定数量的资源,当您用完所有资源时,它们甚至无法向您发送错误响应。

即使我保持在公布的每天速率限制内,也会发生这种情况,但事实证明他们有一个不成文的每分钟限制(或者更像是 - 只是无法处理这么多请求)。

不过我通过用我自己的代码模拟该 API 来回答这个问题,将其放置在网络中以最大化相似性,并且由于我的模拟代码没有做任何事情,所以我在 NodeJS 服务器中从未遇到任何错误。

然后我在需要的时候放了一些倒计时和超时。

我给你同样的建议。请记住他们有每小时限制,并不意味着他们没有不同的每秒/分钟限制。

关于javascript - Node : Do I need to end HTTP requests to save memory/CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com