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.
Będę rejestrował całą odpowiedź, gdy dostanę 500 i odpowiem, gdy znajdę jedną. – Rajiv
Głosuj na to - ten sam problem tutaj http://stackoverflow.com/questions/19769000/google-drive-uploading-file-size-limit –
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. –