2016-07-25 3 views
6

Backend Ошибка [503] Backend Ошибка [503] Backend Ошибка [503] Backend Ошибка [503]YouTube V3 API - Google.Apis.Requests.RequestErrorBackend Error [503]

+0

FWIW, я испытываю это, как хорошо. Код, который отлично работал в течение года плюс все внезапное начало неудачи. Я также использую C# v3 sdk. – irhetoric

+0

Спасибо за комментарий! Приятно знать, что я не схожу с ума! :)) – Ginko

+0

Мне еще нужно протестировать, но Google ответил на проблему, которую я поднял здесь: https://code.google.com/p/gdata-issues/issues/detail?id=8439&thanks=8439&ts=1469419853 – Ginko

ответ

1

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

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

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

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

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

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

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

+0

Привет , Я использую UploadAsync и ResumeAsync, я также уже использую функцию тайм-аута, как вы упомянули. Я также заметил увеличение тайм-аутов несколько месяцев назад, я установил свои тайм-ауты до 5, и с тех пор все было неплохо. Только 1 видео из, возможно, 500 превысило 5 попыток. Тем не менее, я не думаю, что это будет тайм-аут, так как видео достигнет 99%, или они не могут добраться до 1% до того, как эта ошибка 503 будет сброшена. Я никогда не получаю 503 mid-upload. – Ginko

+0

Кроме того, после исследования ошибки 503 компания Google рекомендует разработчикам НЕ называть эту функцию еще раз. «Сервер backendError 503 возвратил ошибку. Не повторяйте этот запрос несколько раз». Я действительно верю, что в бэкэнде что-то не так, и я понятия не имею, что это такое. Это случается для кого-то другого ??? – Ginko

1

Основываясь на этом thread, попробуйте устранить эту ошибку на вашем конце с помощью какой-либо формы exponential back-off или повторите попытку.

Example: Этот метод реализует экспоненциальную стратегию возврата, чтобы возобновить неудачную загрузку.

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) 

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

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

+0

У меня действительно есть экспоненциальная стратегия отсрочки, реализованная для этого программного обеспечения. Это было на месте в течение года без каких-либо проблем. Однако это не объясняет эту ошибку, возникающую при открытии программного обеспечения в новый новый день, загрузке первого видео и буме! Такая же ошибка появляется, видео даже не достигает 1% ... Немедленная ошибка. Затем я попытаюсь повторить попытку, используя метод, аналогичный приведенному выше, те же результаты. Существует 100%, безусловно, проблема с бэкэнд здесь. – Ginko

+0

Я использую методы UploadAsync и ResumeAsync вместе с моей «экспоненциальной стратегией отсрочки» в соответствии с рекомендациями Google. Я провел исследование, и снова это программное обеспечение работает уже более года. Что-то только что произошло 2-3 недели назад, вызвав эти 503. При чтении документов google говорится, что ошибка «может быть» вызвана «экспоненциальной стратегией отсрочки». Мне кажется, что это общая ошибка. – Ginko