Intereting Posts
Установка внешнего ключа в значение null при первом использовании кода инфраструктуры сущности «Невозможно передать объект типа« System.Byte », чтобы напечатать« System.IConvertible ».» Error in Photo: почему и как его исправить? Как написатьAllLines в C # без CRLF Интерфейсы и асинхронные методы Отправка аргументов в экземпляр приложения, который находится в другом процессе Доступ к пути Отказано при загрузке файла excel Регулярное выражение для проверки процента Именованные ограничения типа параметра Наследование MVVM с моделями просмотра Есть ли способ узнать, был ли сжат byte gzipstream? Клиент неавторизован для получения токенов доступа, используя этот метод Gmail API C # Создание таблицы HTML из списка общего classа с указанными свойствами Инъекция IHttpContextAccessor в ApplicationDbContext ASP.NET Core 1.0 Как контролировать порядок стыковки в WinForms Сбросить выбранный элемент combobox в наборе с использованием MVVM

API YouTube V3 – ошибка Google.Apis.Requests.RequestErrorBackend

Бэкэнд-ошибка [503] Бэкэнд-ошибка [503] Бэкэнд-ошибка [503] Бэкэнд-ошибка [503]

    Некоторое время назад, возможно, через пару месяцев серверы загрузки Google начали отсчет времени при загрузке гораздо больше, чем в прошлом. Это ошибка, которую вы видите. В коде нет ничего плохого, кроме того факта, что вы, вероятно, просто сообщаете об ошибке, а не обрабатываете ошибку.

    Скорее всего, вы используете метод .Upload . Я говорю это, потому что ошибка 503 возвращает «Задача была отменена». ошибка при использовании метода .UploadAsync . Я использую .UploadAsync и .ResumeAsync в моей программе загрузки.

    Когда вы получаете такую ​​ошибку при использовании метода .Upload , это указывает на то, что сервер слишком занят, чтобы обрабатывать ваш запрос в течение периода ожидания. Ваша программа должна распознать эту ошибку и вызвать метод .Resume для возобновления загрузки.

    Кроме того, вы можете увеличить тайм-аут от 100 секунд по умолчанию до более высокого значения с помощью этого оператора: YouTube.HttpClient.Timeout = TimeSpan.FromMinutes(HTTP_CLIENT_TIMEOUT_MINUTES);

    где YouTube – это имя переменной вашего объекта YouTubeService .

    По моему опыту, увеличение тайм-аута не так эффективно, как обработка ошибки и запрос возобновления загрузки. Например, если вы установите тайм-аут на пять минут, ваша программа все равно будет терпеть неудачу, если ответ не будет возвращен через пять минут. Да, это может произойти. Обычно я устанавливаю таймаут до двух минут, а затем возобновляю загрузку, если возникает ошибка. Почти всегда загрузка будет возобновлена ​​правильно.

    Иногда загрузка может снова истекать снова. По этой причине я рассчитываю свои резюме и сбрасываю счетчик резюме, когда запускается событие ProgressChanged IUploadProgress.Uploading. У меня есть предел трех повторных попыток и никогда не превышал этот предел.

    Основываясь на этом streamе , попробуйте обработать эту ошибку в конце с некоторой формой экспоненциального отступления или повтора.

    Пример . Этот метод реализует экспоненциальную страtagsю возврата для возобновления неудачной загрузки.

     def resumable_upload(insert_request): response = None error = None retry = 0 while response is None: try: print "Uploading file..." status, response = insert_request.next_chunk() if 'id' in response: print "Video id '%s' was successfully uploaded." % response['id'] else: exit("The upload failed with an unexpected response: %s" % response) except HttpError, e: if e.resp.status in RETRIABLE_STATUS_CODES: error = "A retriable HTTP error %d occurred:\n%s" % (e.resp.status, e.content) else: raise except RETRIABLE_EXCEPTIONS, e: error = "A retriable error occurred: %s" % e if error is not None: print error retry += 1 if retry > MAX_RETRIES: exit("No longer attempting to retry.") max_sleep = 2 ** retry sleep_seconds = random.random() * max_sleep print "Sleeping %f seconds and then retrying..." % sleep_seconds time.sleep(sleep_seconds) 

    Вы также можете загружать видео более надежно, используя возобновляемый протокол загрузки для API Google . Этот протокол позволяет возобновить операцию загрузки после прерывания сети или другой сбой передачи, экономя время и пропускную способность в случае сбоев сети.

    Также проверьте эти ссылки: