Skip to content
Last updated

Hoạt động bất đồng bộ

Một số thao tác MoreLogin nhận việc trước khi trình duyệt, cloud phone, tệp, ứng dụng hoặc lần chạy RPA bên dưới đạt trạng thái cuối. Phản hồi gửi thành công nghĩa là request đã được tiếp nhận; không phải luôn nghĩa là trạng thái yêu cầu đã đạt được.

Mô hình trạng thái phía client

Trạng tháiÝ nghĩaViệc client nên làm
Đã gửiAPI đã nhận lệnh hoặc đã tạo tác vụLưu các ID trả về và requestId; đừng gửi lại ngay cùng một thao tác ghi
Đang chờ hoặc đang chạyThao tác phía sau vẫn đang tiến hànhPolling endpoint trạng thái/kết quả đã tài liệu hóa với khoảng thời gian tăng dần
Thành côngTài nguyên hoặc tác vụ đích đã đạt trạng thái cuối thành côngNgừng polling và tiếp tục luồng công việc
Thất bạiEndpoint trạng thái/kết quả báo thất bại hoặc lỗi nghiệp vụ ở trạng thái cuốiNgừng thử lại tự động; giữ lại ID, chi tiết lỗi và requestId
Kết quả chưa xác địnhThao tác ghi bị timeout hoặc kết nối đóng mà không có phản hồi dùng đượcHãy truy vấn trạng thái hiện tại của tài nguyên/tác vụ trước khi quyết định thử lại

Quy tắc polling

  • Bắt đầu khoảng 1 giây, rồi tăng khoảng cách lên 2, 4, 8 giây, giới hạn ở 15–30 giây.
  • Thêm jitter để nhiều client không polling cùng một thời điểm.
  • Dừng khi đạt trạng thái cuối đã tài liệu hóa; đừng polling vô hạn.
  • Chỉ coi data: null là đang chờ khi endpoint ghi rõ hành vi đó.
  • Timeout truyền tải ở một thao tác ghi không phải bằng chứng thất bại.

Các luồng đã tài liệu hóa

LuồngThao tác gửiThao tác quan sátTrạng thái cuối
Mở/đóng cloud browserPOST /cloudbrowser/start hoặc /cloudbrowser/stopPOST /cloudbrowser/pageRuntime đạt trạng thái mong muốn hoặc biến mất sau khi đóng
Bật/tắt Cloud PhonePOST /cloudphone/powerOn hoặc /cloudphone/powerOffPOST /cloudphone/pageenvStatus=4 đã bật hoặc envStatus=2 đã tắt; 1 là lỗi tạo
Tải tệp lên Cloud PhoneTải lên URL đã ký, rồi POST /cloudphone/uploadFilePOST /cloudphone/uploadFileResultstatus=1 thành công hoặc status=2 thất bại; data: nullstatus=0 là đang chờ
Tải xuống từ Cloud PhonePOST /cloudphone/downloadPOST /cloudphone/download/resultstatus=20 thành công, 30 thất bại, 40 đã hủy; 10 là đang chạy
Cài đặt ứng dụngPOST /cloudphone/app/installPOST /cloudphone/app/installedListGói được yêu cầu xuất hiện trong danh sách ứng dụng đã cài
Lên lịch/chạy RPAPOST /cloudphone/rpa/task/save hoặc /onceTask/savePOST /cloudphone/rpa/task/page, /subTask/page/subTask/detail/{id}taskState=2 đã xong hoặc 3 đã hủy; xem handleResult (0 thất bại, 1 thành công)
Phát trực tiếpPOST /cloudphone/live/start hoặc /live/endPOST /cloudphone/live/statusTrạng thái xác nhận đã bắt đầu hoặc đã dừng phát
Tải lên cloud storagePOST /cloudstorage/upload/init, sau đó PUT lên object storePOST /cloudstorage/upload/complete sau khi mọi PUT cần thiết thành côngRequest hoàn tất thành công; đừng bao giờ gọi complete trước khi tải đối tượng lên thành công

Các thao tác tương ứng của Local API dùng tiền tố /api ở những nơi đã tài liệu hóa. Xem Ma trận thử lại và hoàn tất endpoint để có hướng dẫn theo từng thao tác.

Ví dụ khôi phục sau timeout

try:
    submit_operation()
except TimeoutError:
    # The write may already have succeeded.
    current = query_current_state()
    if current.is_terminal_success:
        pass
    elif current.is_pending:
        poll_until_terminal()
    else:
        decide_whether_retry_is_safe(current)

API công khai hiện chưa định nghĩa header khóa idempotency dùng chung. Vì vậy ID tài nguyên, ID tác vụ, truy vấn trạng thái và requestId là thiết yếu để khôi phục an toàn.