Yêu cầu thg 7 6, 2023 10:29 SA 70 0 2
  • 70 0 2
+2

Response processing

Chia sẻ
  • 70 0 2

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ả image.png 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 ạ

2 CÂU TRẢ LỜI


Đã trả lời thg 7 13, 2023 5:11 CH
+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
Chia sẻ
Đã trả lời thg 8 3, 2023 2:57 SA
+1

Những tác vụ nặng thì thường nó chạy ngầm kiểu schedules hay message queue.

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí