2016-07-25 25 views
6

Backend Error [503] Backend Error [503] Backend Error [503] Backend Error [503]YouTube V3 API - Google.Apis.Requests.RequestErrorBackend Fehler [503]

+0

FWIW, ich bin dies auch erleben. Code, der für ein Jahr gut funktionierte und auf einmal scheiterte. Ich benutze auch die C# v3 SDK. – irhetoric

+0

Danke für den Kommentar! Es ist schön zu wissen, dass ich nicht verrückt werde !! :)) – Ginko

+0

Ich habe noch zu testen, aber Google hat auf das Problem reagiert, das ich hier angesprochen: https://code.google.com/p/gdata-issues/issues/detail?id=8439&thanks=8439&ts=1469419853 – Ginko

Antwort

1

Vor einiger Zeit, vielleicht ein paar In den letzten Monaten haben die Upload-Server von Google viel mehr Zeit für Uploads aufgewandt als in der Vergangenheit. Das ist der Fehler, den Sie sehen. Es ist nichts falsch mit Ihrem Code außer der Tatsache, dass Sie wahrscheinlich nur den Fehler melden, anstatt den Fehler zu behandeln.

Höchstwahrscheinlich verwenden Sie die Methode .Upload. Ich sage das, weil ein Fehler 503 "Eine Aufgabe wurde abgebrochen" zurückgegeben wird. Fehler, wenn die Methode .UploadAsync verwendet wird. Ich verwende .UploadAsync und .ResumeAsync in meinem Upload-Programm.

Wenn Sie bei Verwendung der Methode .Upload einen Fehler wie diesen erhalten, zeigt dies an, dass der Server zu beschäftigt ist, um Ihre Anforderung innerhalb der Zeitüberschreitung zu bearbeiten. Ihr Programm sollte diesen Fehler erkennen und die Methode .Resume aufrufen, um den Upload fortzusetzen.

Alternativ können Sie das Timeout von dem Standard 100 Sekunden, um etwas höher mit dieser Aussage erhöhen: YouTube.HttpClient.Timeout = TimeSpan.FromMinutes(HTTP_CLIENT_TIMEOUT_MINUTES);

wo YouTube der Variablenname Ihrer YouTubeService Objekt ist.

Meiner Erfahrung nach ist die Erhöhung des Timeouts nicht so effektiv wie die Behandlung des Fehlers und die Anforderung, dass der Upload wieder aufgenommen wird. Wenn Sie das Zeitlimit beispielsweise auf fünf Minuten festlegen, schlägt Ihr Programm weiterhin fehl, wenn nach fünf Minuten keine Antwort zurückgegeben wird. Ja, das kann passieren. Normalerweise setze ich das Timeout auf zwei Minuten und setze den Upload dann fort, wenn ein Fehler auftritt. Fast immer wird der Upload korrekt fortgesetzt.

Gelegentlich wird der Upload möglicherweise sofort erneut ablaufen. Aus diesem Grund zähle ich meine Lebensläufe und setze den Lebenslauf-Zähler zurück, wenn ein ProgressChanged IUploadProgress.Uploading-Ereignis ausgelöst wird. Ich habe ein Limit von drei Wiederholungswiederholungen und bin nie über diese Grenze gegangen.

+0

Hallo , Ich verwende UploadAsync und ResumeAsync, ich verwende auch bereits die Timeout-Funktion, wie Sie erwähnt haben. Ich habe auch die Zunahme der Timeouts vor ein paar Monaten bemerkt, ich habe meine Timeouts auf 5 gesetzt und es war ziemlich gut seither. Nur 1 Video von vielleicht 500 hat 5 Wiederholungen überschritten. Allerdings glaube ich nicht, es wäre ein Timeout, da die Videos 99% erreichen ODER sie können nicht 1% erreichen, bevor dieser 503 Fehler ausgelöst wird. Ich bekomme nie einen 503 Mid-Upload. – Ginko

+0

Nach der Untersuchung von Fehler 503 rät Google den Entwicklern, diese Funktion NICHT erneut aufzurufen. "503 backendError Server hat einen Fehler zurückgegeben. Wiederholen Sie diese Abfrage nicht mehr als einmal." Ich glaube wirklich, dass etwas im Backend falsch ist, und ich habe keine Ahnung, was es ist. Passiert das für irgendjemand anderes ??? – Ginko

1

Ausgehend von diesem thread, versuchen Sie, diesen Fehler an Ihrem Ende mit einer Form von exponential back-off zu behandeln oder versuchen Sie es erneut.

Example: Diese Methode implementiert eine exponentielle Backoff-Strategie, um einen fehlgeschlagenen Upload fortzusetzen.

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) 

Sie können auch Videos hochladen zuverlässiger durch die resumable upload protocol for Google APIs verwenden. Mit diesem Protokoll können Sie einen Upload-Vorgang nach einer Netzwerkunterbrechung oder einem anderen Übertragungsfehler fortsetzen und so bei Netzwerkausfällen Zeit und Bandbreite sparen.

auch diese Links überprüfen:

+0

Ich habe tatsächlich eine exponentielle Backoff-Strategie für diese Software implementiert. Es ist seit einem Jahr ohne irgendwelche Probleme an Ort und Stelle. Dies würde jedoch nicht diesen Fehler erklären, der auftritt, wenn ich die Software an einem neuen Tag öffne, das erste Video hochlade, und boom! Derselbe Fehler erscheint, Video wird nicht einmal zu 1% ... Sofortiger Fehler. Ich versuche dann erneut eine ähnliche Methode wie oben zu verwenden, gleiche Ergebnisse. Es gibt 100% definitiv ein Backend-Problem hier. – Ginko

+0

Ich verwende die UploadAsync- und ResumeAsync-Methoden sowie meine "exponentielle Backoff-Strategie" gemäß den Google-Richtlinien. Ich habe die Forschung gemacht, und wieder, diese Software hat seit gut einem Jahr gut funktioniert. Vor zwei bis drei Wochen ist etwas passiert, was diese 503 verursacht hat. Beim Lesen der Google-Dokumente wird angegeben, dass der Fehler möglicherweise auf eine exponentielle Backoff-Strategie zurückzuführen ist. Scheint wie ein generischer Fehler für mich. – Ginko