最近、Googleのスクリプトウェブアプリがqpsの制限に達しています。パフォーマンスを改善するためのより良い方法は何でしょうか。Google Apps Script Web Appロングポーリングと同時実行制限
私は約50人のアクティブユーザーがいます。私は15,000行のGoogleスプレッドシートをデータベースとして使用しています。私のアプリはこのスプレッドシートからユーザーが要求したjsonデータを提供しています。私は長い投票を使用して接続を5分間維持し、スプレッドシートの更新がない場合は閉じます。その後、クライアントは再接続します。 Web Appは私として実行されるように公開されています。
私のポーリングは次のように機能します。
function doGet(e){
var userHasVersion = e.parameter.userVersion
while (runningTime < 300001) {
var currentServerVersion = parseInt(cache.get("currentVersion"),10)
if(userVersion<currentServerVersion){
var returndata = []
for(var i = userVersion+1; i <= currentServerVersion;i++){
var newData = cache.get(i)
if(newData!=null){returnData.push(JSON.parse(cache.get(newData)))}
}
return ContentService.createTextOutput(JSON.stringify({currentServerVersion,data:returnData })).setMimeType(ContentService.MimeType.JSON);
} else {
Utilities.sleep(20000)
}
runningTime = calculateRunningTime()
}
}
私がこれまで試してみました何を:私はスプレッドシートへの呼び出しを減らすためのCacheServiceとの要求を最適化
1)。数ヶ月間助けてくれましたが、現在はqpsエラーがますます多く発生しています。
2)クォータについてGoogleチームに問い合わせる。彼らは、私の説明では、同時実行のためのクォータ/制限が公開されておらず、予告なしに変更されることがあります。彼らは、cacheServiceの使い方とエラー処理の改善を勧めました。
私は短期ポーリングにロングポーリングから切り替えることだと思います。しかし、それは欠点のように感じる。パフォーマンスをさらに最適化するか、別のサービスに移行する必要がありますか?
うヘルプ「アプリにアクセスしているユーザーとしてアプリを実行」を使用しようとしていますか? (ユーザーが同じデータベースを使用する必要があります)
は、GoogleのスクリプトAPI実行可能ファイルは、Webアプリケーションとは異なりますか?それは当てはまるかもしれませんが、同じqpsクォータを共有しているかどうかはわかりません。
私はまた、GAEサービスを検討しているが、私は自由なクォータの上に行くのを回避したいと思います。
アドバイスをいただければ幸いです!
ありがとうございました!私はこれをテストしようとします。私はこのトリックについて知らなかった。短時間ポーリングに切り替えると便利です。次に、このパフォーマンスの違いは間違いありません! –
@Evgeny Vostok私はあなたをお手伝いします。私のサンプルがうまくいかない場合は、私に教えてください。そしてputデータをキャッシュに入れるために '' put() ''を使うと、 '' putAll() ''がより良くなります。 – Tanaike