Làm thế nào để tối ưu code, tránh lỗi 429 Too Many Requests trong Power Apps

Làm thế nào để tối ưu code, tránh lỗi 429 Too Many Requests trong Power Apps

Trong quá trình phát triển ứng dụng bằng Power Apps, một lỗi phổ biến mà nhiều nhà phát triển gặp phải là 429 Too Many Requests. Đây là lỗi do ứng dụng gửi quá nhiều yêu cầu đến nguồn dữ liệu trong một khoảng thời gian ngắn, thường là SharePoint, Dataverse hoặc các API bên ngoài. Nguyên nhân chủ yếu đến từ cách sử dụng không tối ưu các hàm như Filter, LookUp, ForAll hoặc việc truy vấn dữ liệu trực tiếp từ các điều khiển như Gallery. Bài viết này sẽ hướng dẫn bạn cách tối ưu code để tránh lỗi 429, kèm theo ví dụ mã và ứng dụng thực tế trong công việc.


1. Hiểu nguyên nhân gây lỗi 429

Lỗi 429 xảy ra khi ứng dụng gửi quá nhiều request đến máy chủ trong thời gian ngắn. Trong Power Apps, điều này thường đến từ:

  • Sử dụng LookUp hoặc Filter trực tiếp trong Gallery, Label, TextInput
  • Dùng ForAll để duyệt và truy vấn từng bản ghi
  • Không sử dụng bộ nhớ tạm (Collection) để lưu dữ liệu

2. Tránh truy vấn trực tiếp từ Gallery

Ví dụ sai:

Label.Text = LookUp(SharePointList, ID = ThisItem.ID, Title)

Mỗi lần Gallery render, Power Apps sẽ gọi lại LookUp, gây ra nhiều request.

Giải pháp: Tạo collection trước và dùng dữ liệu từ bộ nhớ tạm.

ClearCollect(Col_Data, SharePointList);
Label.Text = LookUp(Col_Data, ID = ThisItem.ID, Title)

Làm thế nào để tối ưu code, tránh lỗi 429 Too Many Requests trong Power Apps

3. Hạn chế sử dụng ForAll với nguồn dữ liệu trực tiếp

Ví dụ sai:

ForAll(SharePointList, Patch(AnotherList, Defaults(AnotherList), {Title: Title}))

Giải pháp: Tạo collection trước, sau đó dùng ForAll với collection.

ClearCollect(Col_SP, SharePointList);
ForAll(Col_SP, Patch(AnotherList, Defaults(AnotherList), {Title: Title}))

4. Tối ưu Filter và LookUp bằng delegation

Sử dụng các hàm được hỗ trợ delegation như =, And, Or, StartsWith. Tránh dùng Len, Mid, In trực tiếp với nguồn dữ liệu.

Ví dụ tốt:

Filter(SharePointList, Status = "Hoàn thành" && Created >= DateAdd(Today(), -30))

Ví dụ không tối ưu:

Filter(SharePointList, Left(Title, 5) = "Yêu cầu")

5. Ứng dụng thực tế trong doanh nghiệp

✅ Quản lý yêu cầu hỗ trợ

Ứng dụng nội bộ xử lý hàng nghìn yêu cầu từ SharePoint. Việc dùng ClearCollect để tải dữ liệu một lần giúp giảm tải request và tránh lỗi 429.

✅ Báo cáo tiến độ công việc

Ứng dụng tổng hợp dữ liệu từ nhiều nguồn. Sử dụng delegation và bộ nhớ tạm giúp hiển thị nhanh, không bị gián đoạn.

✅ Quản lý lịch sử giao dịch

Thay vì truy vấn từng giao dịch bằng LookUp, ứng dụng tải toàn bộ lịch sử vào collection và xử lý cục bộ.


6. Kết luận

Để tránh lỗi 429 Too Many Requests trong Power Apps, bạn cần tối ưu cách truy vấn dữ liệu bằng cách sử dụng bộ nhớ tạm (Collection), tránh truy vấn trực tiếp từ điều khiển, hạn chế ForAll với nguồn dữ liệu trực tiếp và tuân thủ nguyên tắc delegation. Đây là kỹ thuật quan trọng giúp ứng dụng hoạt động ổn định, nhanh chóng và thân thiện với người dùng trong môi trường doanh nghiệp.

Dịch vụ lập trình ứng dụng

🎯 Lập trình API, Python, Node JS, Telegram Bot, Automate Workflow, Power Apps and Apps Script. Ứng dụng Web App, API với Apps Script vào bài toán thực tế trong doanh nghiệp.

📞 +84 78 600 5534 (Zalo, WhatsApp, Telegram)

💻 Github

🌏 appscript.online

Viết một bình luận