+2
Response processing
Mọi người cho em hỏi, em đang có 1 vấn đề là update khoảng 10000row trong DB, em có sử dụng 1 api trên thằng koajs. Do thời gian thực hiện lâu nên ở client bị request timeout, chờ rất lâu mới có kết quả em có trả ngay response lần đầu về là processing ngay khi vào router giống như hình, mặt dù đã gán giá trị trả về nhưng bên client vẫn không nhận Có bác nào cho em xin cách giải quyết vấn đề này với ạ
Thêm một bình luận
2 CÂU TRẢ LỜI
+1
Theo mình thì có 4 cách:
- Setting kéo dài thời gian timeout của client (không khuyến khích)
- Phía FE sử dụng long pulling để check xem lúc nào api trả về kết quả. (sau khi submit thì cứ cho user sử dụng bt, khi nào api update xong thì thông báo cho user)
- thử chia nhỏ request ra làm nhiều request nhỏ, mỗi request khoảng 500-1000 sau đó sử dụng Promise all thử. Thêm nữa mình k biết trong body bạn đang có gì, nên xem xét lại thử trong body có record nào trùng nhau không (nếu trung thì loại bỏ).
- Nếu chia nhỏ ở BE vẫn không cải thiện đc perfomance thì nên chia nhỏ ở FE (vẫn sử dụng promise all, số record mỗi lần call api cần tự tính toán). khi đó FE sẽ không còn bị timeout