微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以增加对 Google Apps 脚本函数的内存分配以修复 502 服务器错误吗?

如何解决我可以增加对 Google Apps 脚本函数的内存分配以修复 502 服务器错误吗?

在 Google Apps 脚本中,我通过 HTTPS 请求调用我的 Cloud Function,然后调用 API,并转发响应。我这样做是因为 API 需要一个静态 IP 地址。我收到一条成功的 Status:200 消息从外部 API 返回到 Cloud Functions。然后我尝试将响应转发回 GAS 并在 GAS 中获取状态:502。

我认为 Status:502 是内存错误?此函数适用于较小的响应。

我的 Google Apps 脚本函数

function gas_function(){
   var token = ScriptApp.getIdentityToken();
   var params = {muteHttpExceptions: true,headers: { Authorization: 'Bearer ' + token }  };
   var url = 'https://'+REGION+'-'+PROJECT_ID+'.cloudfunctions.net/'+RECEIVING_FUNCTION;
   var response = UrlFetchApp.fetch(url,params);
// I should be getting my 'Status:200' response from the Cloud Function with my data
// This works with small datasets,but with a large dataset I get
// Response Code = 502 Error: Could not handle the request
   return response;
}

我的谷歌云函数

exports.cloud_function = functions.https.onRequest(async (request,response) => { 
  var url = 'https://externalapi.com/info/';
  var api_response  = await axios.get(url);
  console.log(api_response.data); // this works!  I have a response with ~12000 data records
  // Now I just need to send it back to Google Apps Script
  response.status(200).send(api_response.data);
});

解决方法

如果 UrlFetchApp.fetch() 收到大于 GAS 限制 (50MB) 的响应,您将收到 Status:502 响应。

API 方面的解决方案:

  • 对您的 Cloud Function 响应进行分页以使其更小
  • 直接从 Cloud Function 执行 GAS 操作

请参阅评论以获取配额和限制的链接 - 谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。