Node.js - 使用每秒 5 个请求的 API 限制

2023-11-21

我有一个“脚本”,可以对特定 API 执行数千个请求。这个 API 每秒只允许 5 个请求(可能它的测量结果与我不同)。提出我正在使用的请求request-promise框架,我已经取代了正常的request-promise与此功能:

const request_promise  = require('request-promise')

function waitRetryPromise() {
  var count = 0 // keeps count of requests
  function rp(options) {
    const timedCall = (resolve) => setTimeout( ()=>resolve(rp(options)),1000) // recursive call
    count += 1
    if (count % 3 == 0) { // recalls after a second on every third request
      return new Promise(timedCall)
    } else {
      return request_promise(options)
    }
  }
  return rp
}

const rp = waitRetryPromise()

一旦短时间内连续发出大约 300 个请求(给予或接受),这些请求就会开始相互干扰。有人有更好的解决方案吗?我认为对同一函数的递归调用会有所帮助,确实如此,但没有解决问题。也许有一种模式可以对请求进行排队,并一次执行几个请求?也许是图书馆?

Thanks!


好的,不要递归调用 rp 等,只需确保在请求之间延迟适当的量......每秒 5 次,即 200 毫秒

function waitRetryPromise() {
    let promise = Promise.resolve();
    return function rp(options) {
        return promise = promise
        .then(() => new Promise(resolve => setTimeout(resolve, 200)))
        .then(() => request_promise(options));
    }
}
const rp = waitRetryPromise();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js - 使用每秒 5 个请求的 API 限制 的相关文章

随机推荐

  • 如何在 Rust 中使用参数重载或可选参数?

    我正在尝试为二叉树编写一个打印函数 这是迄今为止我所拥有的 impl TreeNode fn print self self print 0 fn print self level u8 for i in range 0 level pri
  • 将每个字典值转换为 utf-8(字典理解?)

    我有一本字典 我想将每个值转换为 utf 8 这可行 但是有没有 更Pythonic 的方法 for key in row keys row key unicode row key encode utf 8 对于我可以做的清单 unicod
  • jquery 获取选中复选框

    我正在尝试获取复选框列表和已检查的计数 我有这个 var obj this closest li find checkbox var childCount obj size var checkedCount obj checked leng
  • 数据库中所有表的列表

    如何使用查询获取 SQL Server 数据库中所有表的列表 我的目的是在网页上动态显示它 Try SELECT name from sys tables 这应该会给你你想要的 然后 您需要从网页调用它以按所需格式显示 您可能想查看 如何使
  • BASH 不以防万一

    我正在尝试找出一种合理的方法来在案例中执行 NOT 子句 我这样做的原因是为了 遇到情况时进行转码 也就是说 如果我击中了 avi 没有理由再次将其转为 avi 我可以 只需将其移开 这就是我的案例底部的范围 should做 无论如何 我有
  • HttpWebRequest 非常慢!

    我正在使用开源库连接到我的网络服务器 我担心网络服务器运行速度极慢 然后我尝试在 Ruby 中进行简单的测试 得到了这些结果 Ruby 程序 10 个 HTTP 需要 2 11 秒 获取 Ruby 程序 100 个 HTTP 需要 18 1
  • 在 azure cdn 上托管字体 - CORS 支持

    我无法在 IE 或 Firefox 中通过 azure cdn 公开 azure blob 存储托管字体 我相信这是因为 font face 跨域问题 CORS 正常的解决方案是添加 Access Control Allow Origin
  • 我是否需要为 CDC 设备编写自己的主机端 USB 驱动程序

    这可能不被认为与编程直接相关 但我不知道还能问哪里 我尝试过浏览各种网站 但到目前为止 谷歌还不是我的朋友 我无法确定是否需要为我正在开发的设备可能连接的各种 windows linux mac 平台编写自己的设备驱动程序 或者该功能是否由
  • 如何使用 PHP 以编程方式构建 APR1-MD5

    很像这个问题我想从 PHP 生成 htpasswd 文件条目 然而 正如原始答案中提到的 答案没有显示如何实现 APR1 风格 它需要是 APR1 Apache 风格 才能与 mod dav svn 一起使用 我似乎找不到可以创建密码的有效
  • 故事板中的 initWithNibName 方法

    我正在按照 Facebook 的教程发布到用户的墙上 http developers facebook com docs howtos publish to feed ios sdk 尽管它是根据 xib 项目制作的 但到目前为止 我的故事
  • 发送投票电子邮件

    使用 Outlook API 可以通过在 MailItem 实例上设置 VotingOpions 属性来发送带有民意调查的电子邮件 是否可以以任何方式对 Exchange Web 服务执行相同的操作 Microsoft 已经发布了投票电子邮
  • 在Python中将点后的浮点四舍五入到2位数字

    我正在使用这段代码 f 0 3223322 float 2f f 有没有更Pythonic 更简洁的方法 无需两次转换 使用round文档中的以下注释令人沮丧 round 对于浮点数的行为可能会令人惊讶 例如 round 2 675 2 给
  • 在 pandas MultiIndex 前面添加一个级别

    我有一个 DataFrame 其中经过一些分组后创建了 MultiIndex import numpy as np import pandas as pd from numpy random import randn df pd DataF
  • 如何使用mockito验证公共类的静态方法被调用?

    伪代码是这样的 rc SomePublicClass myPublicStaticFunc arg public class SomePublicClass private SomePublicClass public static int
  • 创建过程中忽略 Config.xml

    我在使用命令行工具时遇到问题科尔多瓦 cli 我遵循了从文档 cordova create test com test 测试 在这一步中我要更改的内容www folder 1 将示例网页移至src文件夹 所以内容www are www co
  • git 子模块添加致命错误:不是 Git 存储库

    我对 Git 相当陌生 并尽力寻找有关此问题的一些文档 但无济于事 这是我的命令 git submodule add https github com joliver EventStore git externalsource JOlive
  • IEnumerator 是否有“HasNext”方法?

    使用JavaIterators 我已经用过hasNext确定迭代是否有更多元素的方法 不消耗元素 因此 hasNext就像一个 Peek 方法 我的问题 有没有类似 hasNext or Peek 具有 C 泛型的方法IEnumerator
  • 在 Apple Swift 中,在什么情况下我不想要隐式展开的可选选项?

    我相信我理解为什么可选值很方便 我最好的使用想法是能够返回一个 nil 布尔值 但是在什么情况下我想使用 声明一个包装的可选值 而不是 对于隐式解包的可选 似乎没有必要用 来声明它 然后必须打字 到处都是 而不仅仅是使用 一次 我不想忽视
  • Typescript 中的类型推断与显式类型声明

    我遇到过几个不同的代码实例 其中变量使用显式类型声明 即使推断的类型很明显 例子 loading boolean false or name string John or count number 0 etc TSLint 更喜欢推断类型而
  • Node.js - 使用每秒 5 个请求的 API 限制

    我有一个 脚本 可以对特定 API 执行数千个请求 这个 API 每秒只允许 5 个请求 可能它的测量结果与我不同 提出我正在使用的请求request promise框架 我已经取代了正常的request promise与此功能 const