2017-07-14 4 views
0

現在、Firebirdクラウド機能を使用して機能からHTTPリクエストを行っています。 HTTPリクエストは3Gモジュールで処理されており、データベースの値の変更を常に読み取る必要があります。GCF HTTPリクエスト、エラー:クォータを超過しました(ファンクション呼び出しのCPU割り当て:1日あたり)

このシステムは、DBに変更が加えられるとただちに3Gモジュールに通知する必要があるアプリケーションで使用されるため、現在はHTTP要求で処理しています。これは完全に正常に動作している

exports.moduleRequest = functions.https.onRequest((req, res) => { 
var change = admin.database().ref('/userInfo'); 
////Once there is a change in any userInfo child, do something 
change.once('child_changed', (snapshot) =>{ 
    res.send(snapshot.val()); 
}); 
}); 

、問題がDBに変更があるまで、私は開いてHTTPリクエストを残すということですので、これは約60分でFirebaseから提供されたクォータを消費しています。

Error: quota exceeded (CPU allocation in function invocations : per day); 
check and increase your quota at https://console.cloud.google.com/iam- 
admin/quotas?project=pass- 
e098f&service=cloudfunctions.googleapis.com&usage=ALL. Function killed. 

このシステムを動作させる別の方法があるかどうか知っていますか?

+0

クラウド関数は、ロングポーリングなどの長寿命のHTTP要求には適していません。機能が実行されている毎秒、メモリ/ CPU時間を請求しています。別のインフラストラクチャ(App Engine FlexやContainer Engineなど)を実行するか、アプリを設計して長時間オープンのHTTP接続を必要としない方法を検討することをおすすめします。 –

答えて

0

私の問題を解決する最も簡単で最良の方法は、REST APIを使用してHTTP GET要求をストリーミングすることです。 SIMCOM SIM5320 3Gモジュールをクライアントとして使用し、サーバーは要求されたパスでデータベースを更新したイベントを送信します。