Come implementeresti una funzionalità di upload di file molto grande con un'applicazione Django e S3?
Nel mio lavoro come fotografo, ho diversi clienti per i quali ho la necessità di condividere file di archivio multi-gigabyte (zip, tar) con quelli che contengono sia gli originali sia le immagini elaborate dell'evento in questione. Fino ad ora, stavamo usando Google Drive per questo, in cui avrei caricato il file su GD e avrebbero recuperato e salvato in un'unità di archiviazione locale. Ripulirei la cartella GD in alcuni casi, poiché i file caricati lì sono riflessi sul mio computer tramite il client Mac Google Drive. Dato che il mio Mac ha solo un'unità a bordo da 256 GB, lo spazio è prezioso.
Un cliente ha avuto due guasti del disco rigido negli ultimi quattro mesi, dove c'erano zero nei dieci anni precedenti che avevo impiegato da loro. Quindi vogliono una soluzione migliore e io sono già uno sviluppatore, quindi perché no?
Ora, la domanda è se sia una buona idea avere il browser responsabile per l'accodamento e il trasporto di un file di archivio di dodici gigabyte sul mio server, per il quale passerà attraverso la scansione di attributi prima di essere spostato lungo a S3.
Posso vedere due opzioni con questo:
- Utilizzare il browser con un modulo di caricamento file per caricare un file a più parti sul server. Al termine, il file verrà controllato ed elaborato da un'attività locale di Celery e quindi caricato su un bucket S3.
- Implementare un comando di gestione Django per attivare l'esecuzione dell'attività di Celery di elaborazione file locale e utilizzare uno script Python locale utilizzando Paramiko per caricare il file e attivare l'esecuzione del comando di gestione al termine del caricamento.
Personalmente, mi sto appoggiando all'Opzione 2, ma vorrei altre idee se possibile.