Деякі операції MoreLogin приймають завдання до того, як пов'язаний браузер, хмарний телефон, файл, застосунок або виконання RPA досягне кінцевого стану. Успішна відповідь на надсилання означає, що запит прийнято, але не завжди означає, що запитаний стан уже досягнуто.
| Стан | Сенс | Дія клієнта |
|---|---|---|
| Надіслано | API прийняв команду або створив задачу | Збережіть повернені ID та requestId; не надсилайте той самий запис одразу повторно |
| Очікує або виконується | Подальша операція все ще триває | Опитуйте задокументований ендпоінт стану/результату зі зростаючими інтервалами |
| Успішно | Цільовий ресурс або задача досягла успішного кінцевого стану | Припиніть опитування та продовжуйте сценарій |
| Невдало | Ендпоінт стану/результату повідомляє про помилку або кінцеву бізнес-помилку | Припиніть автоматичні повтори; збережіть ID, деталі помилки та requestId |
| Результат невідомий | Запис завершився тайм-аутом або з'єднання закрилося без придатної відповіді | Перед рішенням про повтор запитайте поточний стан ресурсу або задачі |
- Починайте приблизно з 1 секунди, далі збільшуйте інтервал до 2, 4, 8 секунд з обмеженням 15–30 секунд.
- Додавайте дрижання, щоб кілька клієнтів не опитували в один момент.
- Зупиняйтеся на задокументованому кінцевому стані; не опитуйте безкінечно.
- Вважайте
data: nullочікуванням лише тоді, коли ендпоінт явно документує таку поведінку. - Тайм-аут передавання під час запису не є доказом невдачі.
| Сценарій | Операція надсилання | Операція спостереження | Кінцевий стан |
|---|---|---|---|
| Запуск/зупинка хмарного браузера | POST /cloudbrowser/start або /cloudbrowser/stop | POST /cloudbrowser/page | Середовище виконання досягає потрібного стану або зникає після зупинки |
| Живлення хмарного телефона | POST /cloudphone/powerOn або /cloudphone/powerOff | POST /cloudphone/page | envStatus=4 увімкнено або envStatus=2 вимкнено; 1 — помилка створення |
| Завантаження файлу на хмарний телефон | Завантажте за підписаним URL, потім POST /cloudphone/uploadFile | POST /cloudphone/uploadFileResult | status=1 успіх або status=2 невдача; data: null і status=0 — очікування |
| Завантаження з хмарного телефона | POST /cloudphone/download | POST /cloudphone/download/result | status=20 успіх, 30 невдача або 40 скасовано; 10 — виконується |
| Установлення застосунку | POST /cloudphone/app/install | POST /cloudphone/app/installedList | Запитаний пакет з'являється у списку встановлених застосунків |
| Розклад/виконання RPA | POST /cloudphone/rpa/task/save або /onceTask/save | POST /cloudphone/rpa/task/page, /subTask/page та /subTask/detail/{id} | taskState=2 завершено або 3 скасовано; перевірте handleResult (0 невдача, 1 успіх) |
| Прямі трансляції | POST /cloudphone/live/start або /live/end | POST /cloudphone/live/status | Статус підтверджує, що трансляція почалася або зупинена |
| Завантаження у хмарне сховище | POST /cloudstorage/upload/init, потім PUT до об'єктного сховища | POST /cloudstorage/upload/complete після успіху кожного потрібного PUT | Запит завершення успішний; ніколи не викликайте complete до успішного завантаження об'єкта |
Аналоги в Local API використовують префікс /api там, де це задокументовано. Рекомендації щодо кожної операції див. у Матриці повторів і завершення операцій.
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 зараз не визначає загального заголовка ключа ідемпотентності. Тому ID ресурсів, ID задач, запити стану та requestId критичні для безпечного відновлення.