Backend Ошибка [503] Backend Ошибка [503] Backend Ошибка [503] Backend Ошибка [503]YouTube V3 API - Google.Apis.Requests.RequestErrorBackend Error [503]
ответ
Некоторое время назад, может быть, пара месяцев, серверы загрузки Google начали тайминг при загрузке гораздо больше, чем в прошлом. Это ошибка, которую вы видите. В коде нет ничего плохого, кроме того факта, что вы, вероятно, просто сообщаете об ошибке, а не обрабатываете ошибку.
Возможно, вы используете .Upload. Я говорю это, потому что ошибка 503 возвращает «Задача была отменена». ошибка, когда используется метод .UploadAsync. Я использую .UploadAsync и .ResumeAsync в моей программе загрузки.
Когда вы получаете такую ошибку, используя метод .Upload, это указывает на то, что сервер слишком занят, чтобы обрабатывать ваш запрос в течение периода ожидания. Ваша программа должна распознать эту ошибку и вызвать метод . Используйте метод для возобновления загрузки.
В качестве альтернативы, вы можете увеличить время ожидания от значения по умолчанию 100 секунд, чтобы что-то высшее, используя эту инструкцию: YouTube.HttpClient.Timeout = TimeSpan.FromMinutes(HTTP_CLIENT_TIMEOUT_MINUTES);
где YouTube является имя переменной вашего YouTubeService объекта.
По моему опыту, увеличение таймаута не так эффективно, как обработка ошибки и запрос на возобновление загрузки. Например, если вы установите тайм-аут на пять минут, ваша программа все равно будет терпеть неудачу, если ответ не будет возвращен через пять минут. Да, это может произойти. Обычно я устанавливаю таймаут до двух минут, а затем возобновляю загрузку, если возникает ошибка. Почти всегда загрузка будет возобновлена правильно.
Иногда загрузка может сразу же затягиваться снова. По этой причине я рассчитываю свои резюме и сбрасываю счетчик резюме, когда запускается событие ProgressChanged IUploadProgress.Uploading. У меня есть предел трех повторных попыток и никогда не превышал этот предел.
Привет , Я использую UploadAsync и ResumeAsync, я также уже использую функцию тайм-аута, как вы упомянули. Я также заметил увеличение тайм-аутов несколько месяцев назад, я установил свои тайм-ауты до 5, и с тех пор все было неплохо. Только 1 видео из, возможно, 500 превысило 5 попыток. Тем не менее, я не думаю, что это будет тайм-аут, так как видео достигнет 99%, или они не могут добраться до 1% до того, как эта ошибка 503 будет сброшена. Я никогда не получаю 503 mid-upload. – Ginko
Кроме того, после исследования ошибки 503 компания Google рекомендует разработчикам НЕ называть эту функцию еще раз. «Сервер backendError 503 возвратил ошибку. Не повторяйте этот запрос несколько раз». Я действительно верю, что в бэкэнде что-то не так, и я понятия не имею, что это такое. Это случается для кого-то другого ??? – Ginko
Основываясь на этом 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. Этот протокол позволяет возобновить операцию загрузки после прерывания сети или другой сбой передачи, экономя время и пропускную способность в случае сбоев сети.
Также проверьте эти ссылки:
У меня действительно есть экспоненциальная стратегия отсрочки, реализованная для этого программного обеспечения. Это было на месте в течение года без каких-либо проблем. Однако это не объясняет эту ошибку, возникающую при открытии программного обеспечения в новый новый день, загрузке первого видео и буме! Такая же ошибка появляется, видео даже не достигает 1% ... Немедленная ошибка. Затем я попытаюсь повторить попытку, используя метод, аналогичный приведенному выше, те же результаты. Существует 100%, безусловно, проблема с бэкэнд здесь. – Ginko
Я использую методы UploadAsync и ResumeAsync вместе с моей «экспоненциальной стратегией отсрочки» в соответствии с рекомендациями Google. Я провел исследование, и снова это программное обеспечение работает уже более года. Что-то только что произошло 2-3 недели назад, вызвав эти 503. При чтении документов google говорится, что ошибка «может быть» вызвана «экспоненциальной стратегией отсрочки». Мне кажется, что это общая ошибка. – Ginko
FWIW, я испытываю это, как хорошо. Код, который отлично работал в течение года плюс все внезапное начало неудачи. Я также использую C# v3 sdk. – irhetoric
Спасибо за комментарий! Приятно знать, что я не схожу с ума! :)) – Ginko
Мне еще нужно протестировать, но Google ответил на проблему, которую я поднял здесь: https://code.google.com/p/gdata-issues/issues/detail?id=8439&thanks=8439&ts=1469419853 – Ginko