2013-04-03 4 views

Odpowiedz

-2

standardowa obsługa błędów jest opisany tutaj: https://developers.google.com/drive/handle-errors

Jednak 500 błędy nigdy nie powinno się zdarzyć, więc proszę dodać informacje dziennika, a Google może wyglądać debugować ten problem dla Ciebie. Dzięki.

+0

Będę rejestrował całą odpowiedź, gdy dostanę 500 i odpowiem, gdy znajdę jedną. – Rajiv

+0

Głosuj na to - ten sam problem tutaj http://stackoverflow.com/questions/19769000/google-drive-uploading-file-size-limit –

+0

Rozwiązany dla mnie - zobacz mój poprzedni komentarz. Sprawdź typ MIME i spróbuj przesłać pliki z Content-Type: applicatio/octet-stream. GoogleDrive czasami kończy się niepowodzeniem z konwersją plików. –

0

Google's documentation wydaje się wskazywać, że jest to błąd wewnętrzny ich, a nie konkretny błąd, który można naprawić. Sugerują użycie exponential backoff, która zasadniczo polega na ponownym wprowadzaniu funkcji w rosnących odstępach czasu.

Na przykład funkcja nie działa. Zaczekaj 2 sekundy i spróbuj ponownie. Jeśli to się nie powiedzie, poczekaj 4 sekundy. Następnie 8 sekund, 16, 32 itd. Większe luki oznaczają, że dajesz coraz więcej czasu na samą usługę. W zależności od potrzeby możesz jednak ograniczyć czas, tak aby odczekał maksymalnie 10 minut przed zatrzymaniem.

Pakiet retrying ma bardzo dobrą konfigurację. Możesz po prostu from retrying import retry, a następnie użyć retry jako dekoratora dla każdej funkcji, która powinna zostać ponownie podjęta. Oto przykład z kopalni:

@retry(wait_exponential_multiplier=1000, wait_exponential_max=60*1000, stop_max_delay=10*60*1000) 
def find_file(name, parent=''): 
    ... 

Aby użyć dekorator wystarczy umieścić @retry przed deklaracji funkcji. Możesz po prostu użyć retry(), ale istnieją opcjonalne parametry, które można przekazać, aby dostosować działanie czasu. Używam wait_exponential_multiplier, aby dostosować wzrost czasu oczekiwania między próbami. wait_exponential_max to maksymalny czas oczekiwania między kolejnymi próbami. I stop_max_delay to czas, w którym będzie ponawiać próbę, zanim podniesie wyjątek. Wszystkie ich wartości są w milisekundach.