![](/img/trans.png)
[英]Google Apps Script Web App long-polling and simultaneous executions limit
[英]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 應用程序的並發連接數。 流程如下。
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
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秒,則不會出錯。
"Execute the app as:" : Me
,則 Web Apps 的腳本以所有者身份運行。 所以使用了所有者的配額。"Execute the app as:" : User accessing the web app
,則 Web Apps 的腳本以每個用戶的身份運行。 所以使用每個用戶的配額。如果這不是你想要的,我很抱歉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.