Google's documentation sembra indicare che si tratta di un errore interno e non di un errore specifico che è possibile correggere. Suggeriscono di utilizzare exponential backoff, che sostanzialmente sta riprovettando la funzione a intervalli crescenti.
Ad esempio, la funzione non riesce. Attendi 2 secondi e riprova. Se fallisce, aspetta 4 secondi. Poi 8 secondi, 16, 32 ecc. Gli spazi più grandi significano che stai dando sempre più tempo per il servizio a se stesso. Anche se, a seconda delle esigenze, potresti voler limitare il tempo alla fine in modo che resti in attesa per un massimo di 10 minuti prima di fermarsi.
Il pacchetto retrying
ha una configurazione molto buona per questo. Puoi solo from retrying import retry
e quindi utilizzare retry
come decoratore su qualsiasi funzione che dovrebbe essere tentata di nuovo. Ecco un esempio di mine:
@retry(wait_exponential_multiplier=1000, wait_exponential_max=60*1000, stop_max_delay=10*60*1000)
def find_file(name, parent=''):
...
Per utilizzare il decoratore non vi resta che mettere @retry
prima della dichiarazione di funzione. Potresti semplicemente usare retry()
ma ci sono dei parametri opzionali che puoi passare per regolare come funziona la sincronizzazione. Io uso wait_exponential_multiplier
per regolare l'aumento del tempo di attesa tra i tentativi. wait_exponential_max
è il tempo massimo che può trascorrere in attesa tra i tentativi. E stop_max_delay
è il tempo che impiegherà a riprovare prima che sollevi l'eccezione. Tutti i loro valori sono in millisecondi.
Registrerò l'intera risposta quando avrò un 500 e rispondo quando ne trovo uno. – Rajiv
Vota per questo - lo stesso problema qui http://stackoverflow.com/questions/19769000/google-drive-uploading-file-size-limit –
Risolto per me - vedi il mio commento precedente. Controlla il tuo mime-type e prova a caricare i tuoi file con Content-Type: applicatio/octet-stream. GoogleDrive non riesce a volte con la conversione dei file. –