Google Spreadsheets API(节点js)

编程入门 行业动态 更新时间:2024-10-10 06:18:49

Google Spreadsheets API(<a href=https://www.elefans.com/category/jswz/34/1771452.html style=节点js)"/>

Google Spreadsheets API(节点js)

我有一个完整的堆栈应用程序,可以从用户那里获取输入,并使用其API服务将数据发布到Google Spreadsheet。

该服务运行良好,直到几个月前,一个客户的请求之一未能发布,并给了我们错误:2020-03-09T11:42:49.035293 + 00:00应用程序[web.1]:API返回错误:错误:该服务当前不可用。

[调查后,此错误涉及503,解决方案是重试,因此我决定使用一个名为'retry'的npm程序包,并将其添加到“ listMajors”函数中(请参见 API示例),就像这样:

   function listMajors(auth) {
     const sheets = google.sheets({version: 'v4', auth});
     // 3 Attempt wrapper
     function listMajorsWrapper(callback) {
       operation.attempt(function(currentAttempt) {
         sheets.spreadsheets.values.append({
           spreadsheetId: config.spreadsheetId,
           range: 'Requests',
           valueInputOption: 'USER_ENTERED',
           insertDataOption: 'INSERT_ROWS',
           resource: {
             "values":
             [
               data
             ]
           }
         }, (err, res) => {
           if (operation.retry(err)) {
               return;
           }
           callback(err ? operation.mainError() : null, res);
           //if (err) return console.log('The API returned an error: ' + err);
         });
       })
     }
     listMajorsWrapper(function(err, result) {
       console.log(err, result);
     });
   }

重试选项是:

   // RETRY configuration
   var operation = retry.operation({
     retries: 2,            // try 1 time and retry 2 times if needed, total = 3
     minTimeout: 10 * 1000, // the number of milliseconds before starting the first retry
     maxTimeout: 60 * 1000  // the maximum number of milliseconds between two retries
   });

昨天,我做了大约5项测试,其中两项给了我重复。

搜索日志后,我发现“重试:正确”。

2020-05-14T13:46:52.070771 + 00:00 app [web.1]:'Content-Type':'application / json',

2020-05-14T13:46:52.070772 + 00:00 app [web.1]:接受:'application / json'},

2020-05-14T13:46:52.070772 + 00:00 app [web.1]:参数:

2020-05-14T13:46:52.070772 + 00:00 app [web.1]:{valueInputOption:'USER_ENTERED',

2020-05-14T13:46:52.070773 + 00:00 app [web.1]:insertDataOption:'INSERT_ROWS'},

2020-05-14T13:46:52.070773 + 00:00 app [web.1]:validateStatus:[Function],

2020-05-14T13:46:52.070773 + 00:00 app [web.1]:重试:是,

问题:

  1. Google是否提供重试选项?如果是这样,它们有多少次重试?
  2. 这是编写Spreadsheets API重试代码的好方法,还是我应该做一些不同的事情(您有示例吗?

在亚历山德罗回应后编辑:npm重试使用指数退避

新->“添加了超时”]

将等待Google重试,然后避免重复或只是延迟初始检查吗?

我昨天进行了几次测试,但没有看到重复的记录,但这并不意味着它仍然正确。我不确定100%。

    setTimeout(function() {
       if (operation.retry(err)) {
         return;
       }
       callback(err ? operation.mainError() : null, res);
    }, 10000)
回答如下:

方法

由于错误503的性质是瞬态的,所以是在您的应用程序中实现重试逻辑的好方法。Google建议一种称为指数退避的策略。它用于提高带宽利用率并在并发环境中最大化请求的吞吐量。

示例

Google Exponential Backoff - Theory

Google Exponential Backoff - Samples

更多推荐

Google Spreadsheets API(节点js)

本文发布于:2024-05-07 15:20:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756893.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   Spreadsheets   Google   js   API

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!