我正在谷歌云上構建一個應用程式,它可以接收用戶的音頻記錄。用戶將錄制1個或多個音頻片段并上傳到后臺,后臺將處理這些片段,運行我建立的機器學習預測模型,并為每個上傳的音頻回傳一個整數給用戶。 處理和預測一段音頻大約需要10秒。用戶可以一次上傳20個音頻。
到目前為止,我所擁有的是:
。- 客戶端的HTML、Javascript、css。上傳功能是異步的,使用fetch并回傳一個承諾
- 后端正在運行的是HTML,Javascript和CSS。
- 后端正在運行Google AppEngine(python3.7)、Firebase認證、Google CLoud存盤和云記錄 。
- 處理和預測在Google Cloud Function上運行 。
我的問題如下。 由于處理程序可能需要200-300秒,一旦用戶點擊上傳按鈕,我應該如何處理這個任務?簡單的請求-回應就夠了嗎?
我已經調查過了。
我已經調查了以下幾點:
在這種情況下,什么才是合適的技術呢?
uj5u.com熱心網友回復:
有辦法改善用戶體驗。
首先,在處理上,你可以進行并行處理。所有的預測都應該由同一個云函式來處理。在App Engine中,你應該有一個多執行緒處理,只為一個音頻片段呼叫你的CLoud函式,并并行處理20次。我不知道如何用Python中的async實作這一點,但我知道你可以
。那么,如果你實作了這一點,你將等待所有的音頻片段處理結束后向你的用戶發送回應。總時間應該在15-20秒之間。
如果您使用Cloud Run,您可以使用streaming(或部分HTTP回應)。
uj5u.com熱心網友回復:
正如你所注意到的,云計算Pub/Sub更適合于服務器之間的通信,因為目前有一個每個主題/每個專案10,000個訂閱的限制(這在將來可能會改變)。
Firebase Cloud Messaging可能是一個更適合客戶端-服務器訊息傳遞的解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/317601.html
標籤:
