javascript - 如何解决 Node.js 中的这个 'Too Many Requests' 错误?

标签 javascript node.js http promise axios

我正在尝试通过使用 Axios 发出连续的 HTTP 请求 来构建一个 JSON 文件:

  1. 获取对象(项目)数组
  2. 在每个项目中创建一个名为附件的数组属性
  3. 获取每个项目的任务
  4. 获取每个任务的附件
  5. 将每个项目的任务的附件推送到项目的附件数组中
  6. 从修改后的项目数组中创建一个 JSON 文件

代码:

let getProjects = function() {
  try {
    return axios.get('https://app.asana.com/api/1.0/projects/')
  } catch (error) {
    console.error(error)
  }
}

let getTasks = function(project) {
  try {
    return axios.get('https://app.asana.com/api/1.0/projects/'+project+'/tasks')
  } catch (error) {
    console.error(error)
  }
}

let getAttachments = function(task) {
  try {
    return axios.get('https://app.asana.com/api/1.0/tasks/'+task+'/attachments')
  } catch (error) {
    console.error(error)
  }
}

async function getAsanaData() {
  let projects = await getProjects()
  return Promise.all(projects.data.data.map(async (project) => {
      project.attachments = []
      let tasks = await getTasks(project.gid)
      return Promise.all(tasks.data.data.map(async (task) => {
        let attachments = await getAttachments(task.gid)
        project.attachments = !!attachments ? project.attachments.concat(attachments.data.data) : project.attachments 
        return project
      }))
  }))
}

getAsanaData()
.then((projects) => {  
  var asanaData = safeJsonStringify(projects);
  fs.writeFile("thing.json", asanaData);
})
.catch(err=>console.log(err))

但是我遇到了这个错误:

status: 429,
statusText: 'Too Many Requests

我还没有发现任何有助于弄清楚如何解决它的方法。我能做什么?

最佳答案

HTTP 响应状态代码 429 表示发送的请求过多,服务器无法处理。它已记录在 https://asana.com/developers/documentation/getting-started/errors也。如 https://asana.com/developers/documentation/getting-started/rate-limits 中所述,允许的最大值为每分钟 150 个.

所以,是的,正如@Randy Casburn 评论的那样,您将不得不限制您的请求。

关于javascript - 如何解决 Node.js 中的这个 'Too Many Requests' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53127777/

相关文章:

javascript - 如何解决node js中的ReferenceError(var未定义)

javascript - HTML5 音频持续时间返回 "undefined"(jQuery)

node.js - NodeJS 从 HTTP 响应中读取文件附件

javascript - 队列 promise (ES6)

javascript - 如何更新位于asp.net iframe之外的ajax updatepanel

javascript - jQuery:以 dd-mm-yyyy 格式添加迄今为止的 4 周

node.js - OrientJS:将二进制数据与 "normal"属性一起存储

c# - 内容处置文件名不适用于 IE

javascript - 使用带有 Angular 2 的 http rest apis

node.js - 使用 Claudia-Api-Builder 为 AWS ApiGateway 设置 HTTP 选项响应