簡體   English   中英

Google App Script Web App 上的並發點擊數或同時執行數是否有任何限制

[英]Is there any limit on number of concurrent hits or simultaneous executions on Google App Script Web App

我正在編寫應用程序腳本(用於處理電子郵件、任務和日歷事件)並希望將其部署為 Web 應用程序。

該應用程序將在運行它的用戶的上下文中運行。 該應用程序將被超過 10k+ 用戶使用,甚至可能更多。

在我將它分發給用戶之前,我想知道 Web 應用程序可以擁有的並發點擊數是否有限制?

在這種情況下,如果運行 Web 應用程序腳本的用戶會受到限制,或者我的(腳本所有者)限制會適用嗎? 如果未達到此處描述的限制,我是否可以假設它可以擴展到足以滿足 10k+ 用戶的需求? 任何與它相關的想法或經驗?

如果你還在尋找這個問題的解決方案,這個怎么樣? 我使用可以進行異步處理的 fetchAll 方法測量了 Web 應用程序的並發連接數。 流程如下。

  1. 部署 Web 應用程序。
  2. 通過異步處理連接到 Web Apps。 此時,作為連接數的worker數發生了變化。
  3. 從 Web Apps 返回結果時檢索錯誤數。

本實驗的示例腳本:

客戶端腳本:Google Apps Script

var workers = 10; // Number of workers
var object = [];
for (var i = 0; i < workers; i++) {
  object.push({
      "url": "https://script.google.com/macros/s/#####/exec",
      "method": "get",
      "muteHttpExceptions": true,
  });
}
var startTime = Date.now();
var res = UrlFetchApp.fetchAll(object);
var endTime = Date.now();
var elapsedTime = (endTime - startTime) / 1000;
var error = res.filter(function(e){return ~e.getContentText().indexOf("Error")});
var result = [[workers, elapsedTime, (error.length > 0 ? error.length : 0)]]; // This is imported to Spreadsheet

Web 應用程序端的腳本:

function doGet(e) {
  if (e.parameter.key == "ok") {
    var val = JSON.stringify({
      date: new Date().getTime().toString(),
    });
    Utilities.sleep(1000);
    return ContentService.createTextOutput(val).setMimeType(ContentService.MimeType.JSON);
  } else {
    return;
  }
}

結果 :

在此處輸入圖片說明

該圖顯示了隨着工作人員數量的增加返回的錯誤數量。 從這個圖中可以看出,30個worker以下沒有錯誤,而且當worker超過30個時,錯誤也包含在返回的結果中。 錯誤信息是Service invoked too many times in a short time: exec qps. Try Utilities.sleep(1000) between calls. Service invoked too many times in a short time: exec qps. Try Utilities.sleep(1000) between calls. . 這意味着對於 Web 應用程序,與並發訪問連接的最大有效工作人員數量為 29。 如果worker的訪問時間間隔超過1秒,則不會出錯。

  • 如果 Web Apps 部署為"Execute the app as:" : Me ,則 Web Apps 的腳本以所有者身份運行。 所以使用了所有者的配額。
  • 如果 Web Apps 部署為"Execute the app as:" : User accessing the web app ,則 Web Apps 的腳本以每個用戶的身份運行。 所以使用每個用戶的配額。

參考:

如果這不是你想要的,我很抱歉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM