簡體   English   中英

構建需要很長時間才能響應的 API 的最佳實踐是什么?

[英]What is the best practice for building an API that takes a long time to respond?

我正在構建一個 API 端點,它必須調用多個外部服務/數據庫,我不希望我的用戶必須等待這個過程發生,但是,這個過程的結果對我的用戶來說是必不可少的。

我的第一個想法是將請求添加到隊列並立即返回,然后在稍后的某個時間,用戶可以查詢不同的端點以獲取結果。

有沒有更好的方法來 go 關於這個? 是否應該有一個 webhook 響應而不是要求用戶查詢 API 兩次?

我見過的三種主要方式:

  1. 客戶端發送 API 請求並立即返回一個作業號。 然后,客戶端可以每隔一段時間(每分鍾左右,取決於通常的結果需要多長時間)發送帶有該作業編號的不同 API 請求,以便檢查進度。 在其中一項檢查中,將完成工作並獲取數據。

  2. 客戶端建立webSocketsocket.io連接。 客戶端通過該 websocket/socket.io 連接發送請求。 服務器開始處理結果。 結果完成后,會立即通過 webSocket/socket.io 連接將其發送回客戶端。 然后客戶端可以為其他請求保持 websocket/socket.io 連接連接或關閉連接。

  3. 使用服務器發送的事件 發送查詢,然后當結果完成后,服務器可以在同一連接上將其發回。

我認為這三個之間沒有“最佳實踐”,因為每個都有一些優勢和一些可能相關的其他用途。 輪詢選項 #1 是最小的公分母,可以在任何情況下工作,但需要客戶端的輪詢策略並且可能有一些延遲(在客戶端輪詢之前准備好結果)。

選擇#2 和#3 都非常有效,它們的通用技術也可能有其他用途。

暫無
暫無

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

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