{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-@l10n/ru/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Асинхронные операции"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"асинхронные-операции","__idx":0},"children":["Асинхронные операции"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Некоторые операции MoreLogin принимают задание до того, как связанный браузер, облачный телефон, файл, приложение или выполнение RPA достигнет конечного состояния. Успешный ответ на отправку означает, что запрос принят, но не всегда означает, что запрошенное состояние уже достигнуто."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"модель-состояний-на-клиенте","__idx":1},"children":["Модель состояний на клиенте"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Состояние"},"children":["Состояние"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Смысл"},"children":["Смысл"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Действие клиента"},"children":["Действие клиента"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Отправлено"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["API принял команду или создал задачу"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Сохраните возвращённые ID и ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestId"]},"; не отправляйте ту же запись сразу повторно"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ожидает или выполняется"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Последующая операция всё ещё идёт"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Опрашивайте задокументированный эндпоинт состояния/результата с растущими интервалами"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Успешно"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Целевой ресурс или задача достигла успешного конечного состояния"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Прекратите опрос и продолжайте сценарий"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Неудачно"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Эндпоинт состояния/результата сообщает об ошибке или конечной бизнес-ошибке"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Прекратите автоматические повторы; сохраните ID, детали ошибки и ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestId"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Результат неизвестен"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Запись завершилась тайм-аутом или соединение закрылось без пригодного ответа"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Прежде чем решать о повторе, запросите текущее состояние ресурса или задачи"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"правила-опроса","__idx":2},"children":["Правила опроса"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Начинайте примерно с 1 секунды, затем увеличивайте интервал до 2, 4, 8 секунд с ограничением 15–30 секунд."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Добавляйте дрожание, чтобы несколько клиентов не опрашивали в один момент."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Останавливайтесь на задокументированном конечном состоянии; не опрашивайте бесконечно."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Считайте ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data: null"]}," ожиданием только тогда, когда эндпоинт явно документирует такое поведение."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Тайм-аут передачи при записи не является доказательством неудачи."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"задокументированные-сценарии","__idx":3},"children":["Задокументированные сценарии"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Сценарий"},"children":["Сценарий"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Операция отправки"},"children":["Операция отправки"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Операция наблюдения"},"children":["Операция наблюдения"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Конечное состояние"},"children":["Конечное состояние"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Запуск/остановка облачного браузера"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudbrowser/start"]}," или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/cloudbrowser/stop"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudbrowser/page"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Среда выполнения достигает нужного состояния или исчезает после остановки"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Питание облачного телефона"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/powerOn"]}," или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/cloudphone/powerOff"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/page"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["envStatus=4"]}," включён или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["envStatus=2"]}," выключен; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]}," — ошибка создания"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Загрузка файла на облачный телефон"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Загрузите по подписанному URL, затем ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/uploadFile"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/uploadFileResult"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status=1"]}," успех или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status=2"]}," неудача; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data: null"]}," и ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status=0"]}," — ожидание"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Скачивание с облачного телефона"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/download"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/download/result"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status=20"]}," успех, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["30"]}," неудача или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["40"]}," отменено; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["10"]}," — выполняется"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Установка приложения"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/app/install"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/app/installedList"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Запрошенный пакет появляется в списке установленных приложений"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Расписание/выполнение RPA"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/rpa/task/save"]}," или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/onceTask/save"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/rpa/task/page"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/subTask/page"]}," и ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/subTask/detail/{id}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["taskState=2"]}," завершено или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["3"]}," отменено; проверьте ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["handleResult"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]}," неудача, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]}," успех)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Прямые трансляции"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/live/start"]}," или ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/live/end"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudphone/live/status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Статус подтверждает, что трансляция началась или остановлена"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Загрузка в облачное хранилище"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudstorage/upload/init"]},", затем ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT"]}," в объектное хранилище"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /cloudstorage/upload/complete"]}," после успеха каждого необходимого PUT"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Запрос завершения успешен; никогда не вызывайте complete до успешной загрузки объекта"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Аналоги в Local API используют префикс ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api"]}," там, где это задокументировано. Рекомендации по каждой операции см. в ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/ru/api-reference/getting-started/endpoint-behavior"},"children":["Матрице повторов и завершения операций"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"пример-восстановления-после-тайм-аута","__idx":4},"children":["Пример восстановления после тайм-аута"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"try:\n    submit_operation()\nexcept TimeoutError:\n    # The write may already have succeeded.\n    current = query_current_state()\n    if current.is_terminal_success:\n        pass\n    elif current.is_pending:\n        poll_until_terminal()\n    else:\n        decide_whether_retry_is_safe(current)\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Публичный API сейчас не определяет общий заголовок ключа идемпотентности. Поэтому ID ресурсов, ID задач, запросы состояния и ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestId"]}," критичны для безопасного восстановления."]}]},"headings":[{"value":"Асинхронные операции","id":"асинхронные-операции","depth":1},{"value":"Модель состояний на клиенте","id":"модель-состояний-на-клиенте","depth":2},{"value":"Правила опроса","id":"правила-опроса","depth":2},{"value":"Задокументированные сценарии","id":"задокументированные-сценарии","depth":2},{"value":"Пример восстановления после тайм-аута","id":"пример-восстановления-после-тайм-аута","depth":2}],"frontmatter":{"seo":{"title":"Асинхронные операции"}},"lastModified":"2026-09-03T05:46:01.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/ru/api-reference/getting-started/async-operations","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}