Javascript 如何在node js中使用twitter管理速率限制?

Javascript 如何在node js中使用twitter管理速率限制?,javascript,node.js,twitter,rate,rate-limiting,Javascript,Node.js,Twitter,Rate,Rate Limiting,我一直在使用twitter api。我正在尝试记录一些来自一组帐户的推文。我正在跟踪250个帐户。这当然超过了利率限制。数据收集的代码如下所示: docs.forEach(function (doc) { client.get('statuses/user_timeline', { screen_name: doc.screen_name, limit: 20 }, function (error, tweets, response) {

我一直在使用twitter api。我正在尝试记录一些来自一组帐户的推文。我正在跟踪250个帐户。这当然超过了利率限制。数据收集的代码如下所示:

docs.forEach(function (doc) {
    client.get('statuses/user_timeline', {
        screen_name: doc.screen_name,
        limit: 20
    }, function (error, tweets, response) {
        if (error) {
            console.log(error);
            if (error.code == 88) {
                console.log(error);
            }
        } else {
            tweets.sort(function (a, b) {
                return b.retweet_count - a.retweet_count
            });
            var top = tweets.slice(0, 3);
            col_tweets.insert(top, {
                w: 1
            }, function (err, result) {
                if (error) {
                    console.log("error while logging");
                } else {
                    console.log("logged: " + doc.screen_name);
                }
            });
        }
    });

});

正如您所见,该程序记录了这些帐户的一些推文。我遇到了速率限制错误。我想找到一个解决方案来计时请求,这样我就不会遇到这些错误。在我看来,有两个问题:a)我的请求最终用完了(明显的问题)b)我相信我发出请求的速度太快,导致零星的速率限制超出了问题,即我将有10个成功的请求,然后是一个代码:88个错误,然后是7个好的,依此类推,直到我的调用用完。这类问题通常是如何处理的?如果有一个简单的解决方案,我可以在代码中看到,我很感激,但除此之外,我希望听到任何建议。谢谢

有许多不同的方法可以解决此问题,但我建议您为所有要发出的请求(例如,数据对象数组)的数据创建一个工作队列


然后,您可以在计时器上运行队列末尾的项目,这样,您每N秒发出的请求不会超过一次,并且一次发出的请求可能不会超过M个。如果未发布速率限制,则您可能需要进行一些实验,以了解在不触发任何限制的情况下(通过调整计时器时间)始终允许您触发请求的速率。

有许多不同的方法来解决此问题,但是,我建议您为所有要发出的请求(例如,数据对象数组)的数据创建一个工作队列

然后,您可以在计时器上运行队列末尾的项目,这样,您每N秒发出的请求不会超过一次,并且一次发出的请求可能不会超过M个。如果未公布速率限制,则您可能需要进行一些实验,以了解在不触发任何限制的情况下(通过调整计时器时间)始终允许您触发请求的速率