在同一脚本中通过UrlFetchApp发出两个请求时使用不同的IP

时间:2014-05-05 10:11:19

标签: google-apps-script

我们是否可以依赖Google App脚本由Time Trigger执行,并使用UrlFetchApp发出两个子请求请求,两者都是由具有相同IP的同一服务器生成的?

我需要确保它,因为在一个请求中我查询远程服务的访问令牌,而另一个请求我使用此访问令牌查询。我查询的远程服务检查客户端是否使用与使用此访问令牌的请求相同的IP请求访问令牌。

修改

我通过时间触发一些愚蠢的脚本来检查行为,其中只有几个连续的UrlFetchApp请求并检查了服务器日志。我有两个明确的观察结果:

  1. 在一个触发器中连续呼叫的IP可能会有所不同
  2. IP有明确的轮换,有时会有一组连续7次使用相同IP的呼叫,有时是6次。但总的来说总是有群组。
  3. 因为我只想在我的脚本中使用Google基础架构,偶尔的失败不是问题,所以我提出了一个丑陋但难以解决的解决方案:

    function batchRequest(userLogin, userPassword, webapiKey, resource, attributes, values ){
      var token = requestToken(userLogin, userPassword, webapiKey ); // requestToken method uses UrlFetchApp.fetch
      var result = request(resource, token,  attributes, values); // requestToken method uses UrlFetchApp.fetch with options.muteHttpExceptions set to true so that we can read the response code
    
      var i = 0;
      while (result.getResponseCode() == 500 && i < 10){
        token = requestToken(userLogin, userPassword, webapiKey ); // requestToken method uses UrlFetchApp.fetch
        result = request(resource, token,  attributes, values);
        i++;
      }
      return result;
    }
    

    所以我只是努力尝试最多10次并且希望能够连接两个请求 - 一个用于令牌,另一个用于某些业务逻辑 - 在同一个“IP组”中完成。

    我在此处提供了更详细的说明:https://medium.com/p/dd0746642d7

1 个答案:

答案 0 :(得分:0)

在同一个触发器中调用yes。从另一个触发器号。根据经验,但我没有看到这个文件。